sorry, dass ich noch einen thread aufmache, aber ich brauche
unbedingt Hilfe. Ich brauche mal ein Beispiel für ein Daten-
bankupdate mit ADO (folgende Vorgehensweise).
Ich habe eine Tabelle "Hardware" in Access, die die Felder "Namen" und "ID" beinhalten ( im Feld "Namen" ist
überall kein Wert enthalten. Das Feld "Namen" will ich jetzt
updaten und zwar mit Hilfe einer Excel-Datei, diese beeinhaltet die gleichen Felder, nur das in dieser Datei das Feld Namen überall Werte enthält. Diese sollen nun mit der Access-Tabelle abgeglichen werden. Das ganze will ich mit ADO lösen.
Das ist mein Tool (funktioniert aber nicht):
Sub RouternamenImport()
Dim Conn As New ADODB.Connection 'Stellt Verbindung zur DB her
Dim RS 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 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"
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;"
Set RS = Conn.Execute(SQL)
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
RS.Fields("Namen") = RNamRef
RS.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