PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MS Access: Wie bestimmte Daten migrieren


HeldImZelt
2007-11-14, 17:31:08
Hi,
ich habe hier eine Datenbank von Gamebase, einem Emulatorfrontend. Dort sind u.a. Spielenamen und ein Favoritenflag verzeichnet. Jetzt wurde die Datenbank erneuert und musste komplett ersetzt werden. Nun habe ich also zwei Datenbanken. Einmal die alte mit den Favoriten flags und einmal die neue, die die Favoriten flags bekommen soll.

Ich will also in der alten Datenbank Einträge mit FavFlags rausfiltern, anhand der Namen aus der 1.Spalte die Einträge in der zweiten Datenbank finden, um dort das FavFlag zu setzen.

Wie macht man das?

http://img407.imageshack.us/img407/4522/msaccesshk4.th.png (http://img407.imageshack.us/img407/4522/msaccesshk4.png)

cessy000
2007-11-15, 09:02:39
alte tabelle in die neue datenbank importieren;
einen join auf die tabellen machen mit der einschränkung nur diejenigen zu joinen die in der alten tabelle das flag haben
und dann mit einer einer aktualisierungsabfrage in der neuen tabelle das flag setzen.

HeldImZelt
2007-11-16, 03:26:16
einen join auf die tabellen machen mit der einschränkung nur diejenigen zu joinen die in der alten tabelle das flag haben
und dann mit einer einer aktualisierungsabfrage in der neuen tabelle das flag setzen.
Wie geht das genau?

Ich habe die alte Tabelle umbenannt und in die neue Datenbank importiert. Jetzt habe ich die Tabellen 'Games' und 'Games_alt' in der neuen Datenbank. Daraufhin habe ich die 'Favs' Spalte (Boolean) aufsteigend sortieren lassen, so dass ich die gewünschten Einträge kopieren kann. Wenn ich diese jetzt in die neue Tabelle einfüge, ordnet er die Boolean flags den falschen Einträgen zu. Er ignoriert den Primärschlüssel, bzw. die Verknüpfung zur ZeilenID.
Beim Importieren finde ich keine Option um bestimmte Spalten zu erneuern oder filter zu setzen.

Berni
2007-11-18, 02:24:37
Ich hoffe ich habe dich richtig verstanden:
Du hast eine Datenbank Games und eine Games_alt. In der Games sollen bei allen Datensätzen mit übereinstimmendem Primärschlüssel der Eintrag "Fav" genauso sein wie bei Games_alt.
Ich würde das per VBA machen (bitte lege vorher eine Sicherung an falls das Ergebnis nicht dem entspricht was du willst!). Dazu in einem Formular einen Button erstellen und den folgenden VBA-Code als Ereignisprozedur "beim Klicken" hinterlegen:
Dim db As DAO.Database
Dim rs As DAO.Recordset

On Error Resume Next
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT PRIMARY FROM Games_alt WHERE Fav=true")
If Not rs.EOF Then rs.MoveFirst
Do While Not rs.EOF
CurrentDb.Execute "UPDATE Games SET Fav=true WHERE PRIMARY=" & rs!PRIMARY
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
Dann das Formular speichern und neu öffnen und den Button klicken.
Habs jetzt nicht getestet, aber müsste so funktionieren. Allerdings habe ich deinen Primärschlüssel nicht im Bild erkannt. Ersetze PRIMARY daher durch den richtigen Namen deines Primärschlüssels!