Operation muss eine aktualisierbare Abfrage verwenden

15/03/2011 - 21:45 von Alexander Bierig | Report spam
Hallo

ich weis, es ist vielfach gefragt udn auch beantwortet worden. Dennoch
kriege ich das nicht gebacken.

Wir kriegen immer wieder mal Daten aus einer Exceltabelle, welche
aktualisierte Werte über Bauteile enthàlt.

Diese lesen wir (noch manuell) in eine Tabelle ins Access ein.

Inder Tabelle stehen auch Zeitenwerte, diese sind in der Excel, klar, in
einer Zeile angebracht -nebeneinander.

Die letztendlcih Zieltabelle verwendet aber die Spalten untereinander:

Schemata:
XLS:
t_gesamt t_f t_g ti_f ti_g fg_bauteil
95 0 0 0 0 Teil1
50 0 0 0 0 Teil2

Zieltabelle:
id_tbl_fg_komponente_zeiten (Autowert) PK
id_fg_komponente (long)
t_thema_fg_komp (text)
t_thema_fg_komp (double)
id_relevanzen (long)

Das heist aus den 5 Spalten werden 5 zeilen. Ist einfacher um ein 6
Element zu erweitern.

Es gibt eine Query "qry_t_thema_fg_komp" welche die o.a. 5
Zeiten(Themen) namentlich und mit ID darstellt (ich habe eine lange
Tabelle in welcehr alle wichtigen Themen/Relevanzen drin stehen, mit
ihrem zu geordneten Thema als Filtermöglichkeit)

Diese Übersetzung hat (und wir reden NUR von aktualisierungen!)
folgenden Testcode:
UPDATE (tbl_fg_komponenten AS tfk INNER JOIN XLS_Daten ON tfk.fg_bauteil
= XLS_Daten.fg_bauteil) INNER JOIN (tbl_fg_komponente_zeiten AS tz INNER
JOIN qry_t_thema_fg_komp AS qt ON tz.id_relevanzen = qt.id_relevanzen)
ON tfk.id_fg_komponente = tz.id_fg_komponente SET tz.t_value =
[tfk].[ref_arbeitszeit_bauteil]
WHERE (((qt.relevanz) ALike "t_gesamt") AND
((tz.id_fg_komponente)=[tfk].[id_fg_komponente]));
(vom Access-Abfrage-Generator erstellt)

Abfrage làuft!
TBL_FG_KOMPONONENTE_ZEITEN wird aktualisiert.

Nun müsste ich das also fünfmal schreiben mit jeweils anderer bedingung.
Effizenter ist m.E. eine Union als Basis zu machen:


SELECT x.id_fg_komponente, x.fg_bauteil, x.id_relevanzen, x.relevanz,
x.t_value
FROM (select tfk.id_fg_komponente, tfk.fg_bauteil, qt.id_relevanzen,
qt.relevanz, xls.t_gesamt as t_value
from qry_t_thema_fg_komp AS qt,tbl_fg_komponenten as tfk inner join
xls_daten as xls on tfk.fg_bauteil=xls.fg_bauteil
where qt.relevanz='t_gesamt'
union
select tfk.id_fg_komponente, tfk.fg_bauteil, qt.id_relevanzen,
qt.relevanz, xls.t_f as t_value
from qry_t_thema_fg_komp AS qt,tbl_fg_komponenten as tfk inner join
xls_daten as xls on tfk.fg_bauteil=xls.fg_bauteil
where qt.relevanz='t_f'
union
select tfk.id_fg_komponente, tfk.fg_bauteil, qt.id_relevanzen,
qt.relevanz, xls.t_g as t_value
from qry_t_thema_fg_komp AS qt,tbl_fg_komponenten as tfk inner join
xls_daten as xls on tfk.fg_bauteil=xls.fg_bauteil
where qt.relevanz='t_g'
union
select tfk.id_fg_komponente, tfk.fg_bauteil, qt.id_relevanzen,
qt.relevanz, xls.ti_f as t_value
from qry_t_thema_fg_komp AS qt,tbl_fg_komponenten as tfk inner join
xls_daten as xls on tfk.fg_bauteil=xls.fg_bauteil
where qt.relevanz='ti_f'
union
select tfk.id_fg_komponente, tfk.fg_bauteil, qt.id_relevanzen,
qt.relevanz, xls.ti_g as t_value
from qry_t_thema_fg_komp AS qt,tbl_fg_komponenten as tfk inner join
xls_daten as xls on tfk.fg_bauteil=xls.fg_bauteil
where qt.relevanz='ti_g'
) AS x;

diese Abfrage ist einfach zu erweitern und pflegen, sie heist
"qrx_xls_99_import_komponente_liste_zeiten"

der daraus resultierende, versagende UpdateCode:

UPDATE qrx_xls_99_import_komponente_liste_zeiten AS xls INNER JOIN
tbl_fg_komponente_zeiten AS sd ON (xls.id_fg_komponente =
sd.id_fg_komponente) AND (xls.id_relevanzen = sd.id_relevanzen) SET
sd.t_value = [xls].[t_value];

Access 2003, Query im Frontend, Daten (mit ausnahme der Table XLS_Daten)
irgendwo im Netz, also via verknüpfte Tabellen.

kann doch irgendwo nicht sein, dass die Jet-Engine das nicht gebacken
kriegt?

Mfg Alex
 

Lesen sie die antworten

#1 Alexander Bierig
15/03/2011 - 21:59 | Warnen spam
Hallo,

ich glaube, es wird so langsam spàt

Am 15.03.2011 21:45, schrieb Alexander Bierig:
Hallo

ich weis, es ist vielfach gefragt udn auch beantwortet worden. Dennoch



Mfg Alex


Asche auf mein Haupt, die vorentwickelte Abfrage verwendet ein anderes
Feld und liest die Wert NICHT aus der XLS-Import-Datei aus.
Meine grudnsàtzliche Frage bleibt davon alelrdigns unberührt.

MfG Alex.

Ähnliche fragen