Zum Inhalt springen

VB: SQL: Datensatz verschieben


Empfohlene Beiträge

Geschrieben

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;-)

Geschrieben

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...

Geschrieben

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;-)

Geschrieben

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;-)

Geschrieben
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

Geschrieben

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

Geschrieben
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

Geschrieben

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

Geschrieben

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

Geschrieben

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...

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...