Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

SELECT / INSERT / UPDATE zwei Access Tabellen

Begonnen von Ben.Wisch, September 21, 2010, 12:10:58

⏪ vorheriges - nächstes ⏩

Ben.Wisch

???

Hallo Zusammen,

ich bin zu ersten Mal in einem Forum um ein fachliche Frage zu stellen. Wäre einer der eingeloggten Mitleidenden (MS Produkt) bitte so freundlich mir zu meinem Thema eine Antwort zu geben? Zunächst ich bin absoluter VBA Neuling.
Ich habe folgendes Problem : Ich habe zwei Tabellen, von denen eine als "Mutter" Tabelle mit ziemlich vielen Daten gefüllt und gepflegt wird. Aus dieser Tabelle (Allgemein) soll für einen Datenaustausch, der unregelmäßig erfolgt, eine zweite Tabelle (Allgemein2) gefüllt und upgedatet werden. Dieses soll Satzweise aus einem Formular heraus geschehen. Ich habe nun Bücher und Links durchsucht aber keine passende Lösung dafür gefunden. Die Codebeispiele, die ich mich daraufhin zusammen geschustert habe, bringen mich irgendwie nicht weiter.  Das Coding, das ich mir zusammengereimt habe sieht folgendermassen aus:

Private Sub Befehl15_Click()
On Error GoTo Err_Befehl15_Click

Dim strSQL1 As String       ' Select
Dim strSQL2 As String       ' Insert
Dim strSQL3 As String       ' Update

Dim bsa_auswahl As String   ' Bildschirmeingabe

Dim rst_nummer As String
Dim rst_titel As String
Dim rst_jahr As String
Dim rst_zeit As String

auswahl = "'" & Me![nummer] & "'"

'--------------------------------------------------------
' Datensatzauswahl
'--------------------------------------------------------

DoCmd.SetWarnings False

strSQL1 = "SELECT Allgemein.nummer, Allgemein.titel " & _
          "FROM Allgemein " & _
          "WHERE Allgemein.nummer = bsa_auswahl " & _
          "ORDER BY Allgemein.nummer;"
       
Debug.Print strSQL1

DoCmd.RunSQL strSQL1

rst_nummer = Allgemein.nummer
rst_titel = Allgemein.titel

'--------------------------------------------------------
' Einfügen Datensatz
'--------------------------------------------------------

DoCmd.SetWarnings False

srtSQL2 = "INSERT INTO Allgemein2 ( nummer ) " & _
          "SELECT Allgemein.nummer " & _
          "FROM [Allgemein] group by Allgemein.nummer;"
           
Debug.Print strSQL2

DoCmd.RunSQL strSQL2

'--------------------------------------------------------
' Updaten Datensatz
'--------------------------------------------------------

DoCmd.SetWarnings False

strSQL3 = "UPDATE Allgemein2 AS A2" & _
          " INNER JOIN Allgemein AS A1" & _
          " ON (A2.nummer = A1.nummer)" & _
          " SET A2.nummer = A1.nummer" & _
          " SET A2.titel = A1.titel" & _
          " SET A2.jahr = A1.jahr" & _
          " SET A2.zeit = A1.zeit;"
                         
Debug.Print strSQL3

DoCmd.RunSQL strSQL3

'--------------------------------------------------------
' Fehlermeldungen
'--------------------------------------------------------

DoCmd.SetWarnings True
Exit_Befehl15_Click:
    Exit Sub

Err_Befehl15_Click:
    MsgBox Err.Description
    Resume Exit_Befehl15_Click
   
End Sub

Wäre einer der Spezialisten bitte si freundlich mir zu sagen, was ich an dieser Procedur falsch gemacht habe? Ich danke schon mal.

Ben.Wisch

DF6GL

Hallo und willkommen,


da ist einiges unklar am Konzept und dem Code:

Nur code-bezogene Korrekturen:


Private Sub Befehl15_Click()
On Error GoTo Err_Befehl15_Click

Dim strSQL1 As String       ' Select
Dim strSQL2 As String       ' Insert
Dim strSQL3 As String       ' Update

Dim bsa_auswahl As String   ' Bildschirmeingabe

Dim rst_nummer As String
Dim rst_titel As String
Dim rst_jahr As String
Dim rst_zeit As String

auswahl = "'" & Me![nummer] & "'"  ' für was ist diese Zeile? Was ist "auswahl"?

'--------------------------------------------------------
' Datensatzauswahl
'--------------------------------------------------------

DoCmd.SetWarnings False

strSQL1 = "SELECT Allgemein.nummer, Allgemein.titel " & _
          "FROM Allgemein " & _
          "WHERE Allgemein.nummer = bsa_auswahl " & _
          "ORDER BY Allgemein.nummer;"
       
Debug.Print strSQL1

DoCmd.RunSQL strSQL1

rst_nummer = Allgemein.nummer
rst_titel = Allgemein.titel
'--------------------------------------------------------
' Einfügen Datensatz
'--------------------------------------------------------

DoCmd.SetWarnings False

srtSQL2 = "INSERT INTO Allgemein2 ( nummer ) " & _
          "SELECT Allgemein.nummer " & _
          "FROM [Allgemein] group by Allgemein.nummer;"
           
Debug.Print strSQL2

DoCmd.RunSQL strSQL2

'--------------------------------------------------------
' Updaten Datensatz
'--------------------------------------------------------

DoCmd.SetWarnings False

strSQL3 = "UPDATE Allgemein2 AS A2" & _
          " INNER JOIN Allgemein AS A1" & _
          " ON (A2.nummer = A1.nummer)" & _
          " SET A2.nummer = A1.nummer" & _
          " , A2.titel = A1.titel" & _
          " , A2.jahr = A1.jahr" & _
          " , A2.zeit = A1.zeit;"
                         
Debug.Print strSQL3

DoCmd.RunSQL strSQL3

'--------------------------------------------------------
' Fehlermeldungen
'--------------------------------------------------------

DoCmd.SetWarnings True
Exit_Befehl15_Click:
    Exit Sub

Err_Befehl15_Click:
    MsgBox Err.Description
    Resume Exit_Befehl15_Click
   
End Sub

Ben.Wisch

Hallo DF6GL in richtung Bodensee,

Schönen dank für die schnelle Hilfe. Hat auch wunderbar geklappt, war ne blöde Idee von mir den ersten SELCT Befehl überhaupt einzubinden.
Habe gerade nur noch Probleme mit dem Insert Befehl, es kommt die Meldung
Unzulässige SQL-Anweisung: 'DELETE', 'INSERT' .... erwartet.

Ich bin gerade auf der suche nach dem Fehler.

Aber schon mal herzlichen Dank, für die Hilfe.

Ben.Wisch