ChrisDaHub Geschrieben 19. März 2003 Geschrieben 19. März 2003 Hi, gibt es eine einfache Möglichkeit (mit SQL?), Daten innerhalb einer Datenbank von einer Tabelle in eine andere Tabelle zu verschieben? Die Tabellen sind identisch aufgebaut. Sie haben lediglich andere Namen... Danke für eure Hilfe, Chris;-) Zitieren
Peregrin Geschrieben 19. März 2003 Geschrieben 19. März 2003 hi, welches dbms? wenn subselects erlaubt sind: insert into ziel_tab (select test1 from quell_tab) fuegt alle datensaetze von tabelle quell_tab in ziel_tab ein. (im subselect kann natuerlich auch noch eingeschraenkt werden.) danach bei bedarf loeschen von quell_tab hoffe, es hilft... Zitieren
ChrisDaHub Geschrieben 19. März 2003 Autor Geschrieben 19. März 2003 Hi, Access 97.... Ich hoffe es klappt... Werde es gleich wenn ich heim komme testen.. danke, chris;-) Zitieren
ChrisDaHub Geschrieben 20. März 2003 Autor Geschrieben 20. März 2003 Hallo, fehlt hier noch was? Ich habe es in Access direkt ausprobiert. Da geht es. Warum tut sich hier nichts? Wäre nett, wenn mir da jemand schnell helfen könnte... DANKE! Code: ID = txt_ID.Text datMoldausschuss.RecordSource = "INSERT INTO Geloescht SELECT * From Moldausschuss WHERE ID = " & ID & ";" datMoldausschuss.RecordSource = "DELETE * From Moldausschuss WHERE ID = " & ID & ";" Viele Grüße, Chris;-) Zitieren
Peregrin Geschrieben 20. März 2003 Geschrieben 20. März 2003 hi, ein tip ins blaue: lass die semikolen am ende der statements weg... Zitieren
ChrisDaHub Geschrieben 20. März 2003 Autor Geschrieben 20. März 2003 leider bringt das immer noch nichts.. Der Datensatz ist nach der Ausführung unverändert in der Tabelle Moldausschuss und die Tabelle Geloescht ist nach wie vor leer.. =( Sonst noch Vorschläge oder Geistesblitze? Mir sind die mittlerweile ausgegangen... Gruß, Chris;-) Zitieren
Peregrin Geschrieben 21. März 2003 Geschrieben 21. März 2003 hi chris, hat sich was ergeben?? Zitieren
*I C Q* Geschrieben 21. März 2003 Geschrieben 21. März 2003 Originally posted by ChrisDaHub ID = txt_ID.Text datMoldausschuss.RecordSource = "INSERT INTO Geloescht SELECT * From Moldausschuss WHERE ID = " & ID & ";" datMoldausschuss.RecordSource = "DELETE * From Moldausschuss WHERE ID = " & ID & ";" Die RecordSource-Eigenschaft (übersetzt auch "Datenherkunft") eines Objektes dient dazu, dem Objekt Daten zur Verfügung zu stellen. Für Aktionsabfragen wie INSERT, DELETE und UPDATE ist diese Eigenschaft nicht geeignet. Du solltest mit der EXECUTE-Methode Deines Connection- oder Database-Objekts arbeiten. Sprich: MyConnection.execute "INSERT INTO..." MyConnection.execute "DELETE * ..." Dann sollte es auch mit der Funktion klappen! ICQ Zitieren
ChrisDaHub Geschrieben 24. März 2003 Autor Geschrieben 24. März 2003 Hallo, nein, leider bin ich noch nicht weier gekommen. Ich habe nach der Methode "Execute" gesucht, aber nichts gefunden. Ich verwende das ganz normale Data-Objekt um mit der Datenbank zu arbeiten. Wie funktioniert das da? Habe ich irgendwie die Möglichkeit, Daten an eine Access-Interne Abfrage zu übergeben? Dann könnte ich da ja die Datensatz-ID hin übergeben und so beide Abfragen ausführen. Oder gibt es noch eine Möglichkeit? Jetzt wird es echt langsam eng.. Eigentlich hätte ich das Programm letzte Woche fertig haben müssen =( Gruß, Chris Zitieren
*I C Q* Geschrieben 24. März 2003 Geschrieben 24. März 2003 Originally posted by ChrisDaHub Ich habe nach der Methode "Execute" gesucht, aber nichts gefunden. Mist, ich hab gerade kein VB hier, aber ich versuch mal, ob ich's vielleicht so hinbekomme. Du musst in Deinem Projekt doch irgendwo ein Connection-Objekt haben, wenn mich nicht alles täuscht. Dieses Connection-Objekt besitzt die Execute-Methode! Sonst poste doch mal ein wenig Source, dann schauen wir mal. ICQ Zitieren
ChrisDaHub Geschrieben 24. März 2003 Autor Geschrieben 24. März 2003 Hi ICQ, ich habe in meiner Komponentenliste kein Connection-Objekt gefunden. Meinst du vielleicht das Data-Objekt? Das hat keine Execute Methode... Wenn du möchtest, schicke ich dir das gesamte Projekt mal rüber.. (via eMail).. Vielleicht kommst du damit besser klar als ich. Schick mir einfach deine eMail-Adresse per PM. Gruß, Chris Zitieren
ChrisDaHub Geschrieben 24. März 2003 Autor Geschrieben 24. März 2003 Hi, habe noch ein bischen gestöbert und dann doch eine Execute-Methode gefunden... datMoldausschuss.Database.Connection.Execute ("INSERT INTO Geloescht SELECT * From Moldausschuss WHERE ID = '" & ID & "'") leider bekomme ich hier nun eine Fehlermeldung: Laufzeitfehler 3251 (Das Object oder der Provider kann den angeforderten Vorgang nicht ausführen) Was mach ich denn nun schon wieder falsch??? Gruß, Chris Zitieren
Peregrin Geschrieben 24. März 2003 Geschrieben 24. März 2003 hi chris, versuch es doch mal so herum: private sub copy() dim conn as adodb.connection set conn = new adodb.connection 'sieh dir noch mal die parameter fuer die open-methode an call conn.open("provider", "user", "password") if(not conn.state = adstateopen)then call msgbox("datenbank-verbindung konnte nicht geoeffnet werden..") exit sub end if 'ausfuehren der beiden statements call conn.execute("insert into ...") call conn.execute("delete from ...") end sub ist ungetested und bei mir nicht ausgefuehrt worden, ... also keine garantie :-) hoffe, es hilft... Zitieren
ChrisDaHub Geschrieben 25. März 2003 Autor Geschrieben 25. März 2003 Hi, hab mir die Parameter für die Open-Methode angesehen und festgestellt, dass ich es nicht so ganz verstehe... Besonders das mit dem ConnectionString.. Ich habe jetzt mal deinen Code in eine Funktion kopiert und versucht, diesen auszuführen. Leider bekomme ich bei conn.open einen Laufzeitfehler. Über diesen Fehler habe ich nirgends was gefunden. Es ist der Fehler 3748: (Connection was denied. New connection you requested has different characteristics than the one already in use) Was will der mir damit sagen? Was mache ich schon wieder falsch? Ich habe mal den Code der Function angehängt: Public Function MoulDelete(ByVal ID As Integer) Dim conn As adodb.Connection Set conn = New adodb.Connection 'So... und hier gibt es den Fehler... Wie ist denn die Syntax? In der Hilfe steht nicht viel darüber... conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;File Name=\\degwpcg5\C$\MOLDAUSSCHUSS\MOLDAUSSCHUSS.MDB", "Admin", "passwoertelein" If (Not conn.State = adStateOpen) Then Call MsgBox("datenbank-verbindung konnte nicht geoeffnet werden..") Exit Function End If 'ausfuehren der beiden statements Call conn.Execute("insert into ...") Call conn.Execute("delete from ...") End Function Kann mit bitte jemand helfen? Gruß, Chris Zitieren
ChrisDaHub Geschrieben 31. März 2003 Autor Geschrieben 31. März 2003 Hi, hat sich erledigt. Ich hab das Problem jetzt anderst gelöst. Ich öffne beide Tabellen mit je einem DATA-Objekt. Im Formular habe ich für jedes Feld pro Tabelle ein Textfeld erstellt und diese mit allen Feldern in den Tabellen verbunden. Jetzt hat jedes Feld in beiden Tabellen ein zugeordnetes Textfeld. So... Wenn ich nun zu dem DS hin navigiert habe, erstelle ich einen neuen DS in Tabelle2 (.AddNew) und kopiere alle Inhalte der Textfelder von Tabelle1 ind die Textfelder von Tabelle2. Danach noch datTabelle2.Recordset.Update und datTabelle1.Recordset.delete..... So einfach kanns gehn.. Danke aber trotzdem an alle, die mir geholfen haben. Gruß, chris Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.