ich hatte schon 2 x gethreaded, bin aber leider nicht zu einer Lösung bzgl. meines Problems gekommen. Erläuterung:
Ich will mit VBA und ADO eine Tabelle in Access aktualisieren,d.h. ich habe eine Excel-Datei, in der 2 Spalten vorhanden sind "ID" und "Namen". In der Access-Tabelle sind diese Felder auch enthalten, nur dass das Feld "Namen" hier leer ist. Dieses will ich anhand der Excel-Datei updaten. Ich bekomme das aber nicht hin. Ich habs mit nem Update-SQL-String versucht, 2 Recordsets aufgebaut, d.h. einer für Update einer für Select, ging alles nicht. Wer hat mir hier handfeste Vorschläge? Am liebsten wäre mir ein Beispiel-Tool, das mir jemand zusenden würde. Hier mein Tool (das nicht funzt):
P.S. Ach so, das ganze will ich mit ADO lösen, nicht mit DAO.
Aber egal wenn mir jemand Vorschläge hat, nehme ich diese
gerne an.
Gruß Stefan. Meine mail-Adr.: Stefan.Sasse@web.de
Sub RouternamenImport()
Dim Conn As New ADODB.Connection 'Stellt Verbindung zur DB her
Dim RS As Object
Dim RS2 As Object
Dim RefDat As String 'Name der Refernzdatei
Dim RefPath As String 'Pfad, in dem die Referenzdatei liegt
Dim PIDRef As String 'PortID aus Referenzdatei - Routernamen -
Dim PIDDB As String 'PortID aus Datenbank
Dim NameDB As String 'Routername aus Datenbank
Dim RNamRef As String 'Routername aus Referenzdatei
Dim LstRef As Long 'Letzte Zeile in der Referenzdatei
Dim I, J As Long 'Zeilencounter
Dim SQL, SQL2 As String 'SQL-String
Dim TestV As String 'Testvariable
RefDat = "Routername_LVNID.xls"
RefPath = "J:\Projekte\Land_Bw\LVN III Betrieb\Beschaffung\Router\Routernamen\"
On Error Resume Next
Workbooks(RefDat).Sheets(1).Activate
If Err.Number = 9 Then
Workbooks.Open RefPath & RefDat
End If
Workbooks(RefDat).Sheets(1).Activate
LstRef = Workbooks(RefDat).Sheets(1).UsedRange.Rows.Count
Conn.Open "TestDB", "Sasse", "kornelia"
SQL2 = "UPDATE Hardware.Namen " & _
"FROM HardwareTypen INNER JOIN (Ports " & _
"INNER JOIN (Aufträge INNER JOIN Hardware " & _
"ON Aufträge.Auftrag_ID = Hardware.Auftrag_ID) " & _
"ON Ports.Port_ID = Aufträge.Port_ID) ON HardwareTypen.HardwareTyp_" & _
"ID = Hardware.HardwareTyp_ID;"
SQL = "SELECT Ports.Nummer, Hardware.Namen " & _
"FROM HardwareTypen INNER JOIN (Ports " & _
"INNER JOIN (Aufträge INNER JOIN Hardware " & _
"ON Aufträge.Auftrag_ID = Hardware.Auftrag_ID) " & _
"ON Ports.Port_ID = Aufträge.Port_ID) ON HardwareTypen.HardwareTyp_" & _
"ID = Hardware.HardwareTyp_ID;"
'SQLx = "UPDATE Hardware.Namen = '" & RNamRef & "' Where [Ports.Nummer] = " & PIDRef & " ;"
Set RS = Conn.Execute(SQL)
Set RS2 = Conn.Execute(SQL2)
For I = 2 To LstRef
PIDRef = Workbooks(RefDat).Sheets(1).Cells(I, 2).Value
PIDRef = Left(PIDRef, 8)
RNamRef = Workbooks(RefDat).Sheets(1).Cells(I, 1).Value
Do Until RS.EOF
PIDDB = RS.Fields("Nummer")
RS.MoveNext
If PIDDB = PIDRef Then
NameDB = RS.Fields("Namen")
If NameDB = "" Then
RS2.Fields("Namen") = RNamRef
TestV = RS2.Fields("Namen").Value
RS2.UpdateBatch
End If
End If
Loop
Application.StatusBar = I & " von " & LstRef & " Datensätzen importiert..."
Next I
MsgBox "Importvorgang erfolgreich beendet.", vbOKOnly
Conn.Close 'schließt connection zur Datenbank
End Sub