Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Beate1953 am Juni 03, 2014, 11:28:41

Titel: Aktualisierungsabfrage?!
Beitrag von: Beate1953 am Juni 03, 2014, 11:28:41
Hallo,

ich brauche Hilfe bei einer Aktualisierungsabfrage. Mit denen habe ich leider Null Erfahrung.

Ich habe eine Tabelle mit (u.a.) den Feldern Barcode(LongInt), Ort(LongInt) und InvDatum(Date). Die meisten Barcodes haben sowohl in 2011 wie auch 2013 einen Datensatz, wobei in dem Satz von 2011 ein Ort eingetragen ist, aber in dem DS von 2013 keiner. Nun möchte ich, dass der Ort aus den 2011er Datensätzen in den jeweiligen (gleicher Barcode) DS von 2013 übernommen wird.

Es gibt auch einige Barcodes, die nur in 2011 oder nur in 2013 einen DS haben. Bei denen soll natürlich nichts aktualisiert werden.

Liege ich da mit einer Aktualisierungsabfrage richtig, oder geht das ganz anders?

Vielen Dank im Voraus
Beate1953
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: MzKlMu am Juni 03, 2014, 11:45:08
Hallo,
ja, ist richtig. Beide Tabellen mit einer Verknüpfung über den Barcode.

Barcode und Ort als LongInt scheint mir falsch. Der Barcode könnte nur 10 Stellen haben und ein Ort als Zahl?
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: Beate1953 am Juni 03, 2014, 12:13:22
Hallo,

es handelt sich um nur eine Tabelle, die folgendermaßen aussieht:

Barcode           Ort        Datum
1                      5         01.01.2011
1                                 01.01.2013
2                      7         01.01.2011
2                                 01.01.2013
3                      6         01.01.2011
4                                 01.01.2013
5                      8         01.01.2011
5                                 01.01.2013
u.s.w.

Ich brauche die Aktualisierung also innerhalb einer Tabelle

Das LongInt für Ort kommt daher, dass ich eine extra Tabelle mit den möglichen Standorten habe, die verknüpft ist.

Warum ist LongInteger für Barcode falsch? Gibt es einen Datentyp, der mir noch mehr Stellen für eine Ganzzahl zur Verfügung stellt?

Viele Grüße
Beate1953
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: MzKlMu am Juni 03, 2014, 12:33:16
Hallo,
ZitatGibt es einen Datentyp, der mir noch mehr Stellen für eine Ganzzahl zur Verfügung stellt?
nein. üblicherweise verwendet man für den Barcode den Datentyp Text.
Aber bei Dir scheint das ja wie beim Ort nur eine Schlüsselzahl zu sein.
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: DF6GL am Juni 03, 2014, 13:32:32
Hallo,

z. B. mit Dlookup in einem Abfrage-SQL-String(eine Unterabfrage ist auch möglich)

Update tblTabelle as A set Ort = Dlookup("Ort","tblTabelle","Barcode= " & A.Barcode & "  and  year(Datum) = 2011")  Where year(A.Datum) = 2013


Update tblTabelle as A set Ort = (Select top 1 Ort from tblTabelle as B Where B.Barcode= A.Barcode  and  year(Datum) = 2011)  Where year(A.Datum) = 2013
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: Beate1953 am Juni 05, 2014, 14:20:31
Hallo,

der Code mit dem DLookUp funktioniert prima. Vielen herzlichen Dank!

Bei dem Code mit dem SubSelect kommt die Meldung: Operation muss eine aktualisierbare Abfrage verwenden.  Wieso ist der Code nicht aktualisierbar und was bedeutet das?

Viele Grüße
Beate1953
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: DF6GL am Juni 05, 2014, 14:42:52
Hallo,


sorry für die Luft-SQL,  besser ist dies:

UPDATE tblTabelle as A 
    inner join tblTabelle as B on B.Barcode=A.Barcode
Set A.Ort =B.Ort
WHERE Year(B.Datum)=2011 
'falls erforderlich:   and   Year(A.Datum)=2013   
Titel: Re: Aktualisierungsabfrage?!
Beitrag von: Beate1953 am Juni 10, 2014, 10:28:45
Hallo,

auf diese Lösung wäre ich nie gekommen. Vielen, vielen Dank

Viele Grüße
Beate1953