Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
224to228
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten importieren - need help!

Daten importieren - need help!
03.03.2003 09:05:23
Stefan
Sehr geehrtes Forum,

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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Daten importieren - need help!
03.03.2003 09:33:09
Nike

Hi,
hier ne komplette Einführung und auf dieser Seite,
wie man einen Datensatz aktualisieren kann.

Vielleicht hilft Dir das weiter.
Kurze Info ob ok oder nicht, wäre gut für andere,
die vielleicht später mal was ähnliches suchen...

Bye

Nike

Re: Daten importieren - need help!
03.03.2003 09:34:49
Stefan

Hallo Nike,

danke für dein posting. Schaue mir die Geschichte an und
gebe Dir dann Info.

Gruß Stefan

Info
03.03.2003 11:22:18
Nike

Hallo Nike,

die Helferleien sind nicht schlecht, bin grad am testen. Nur in Sachen SQL ist halt nichts mit enthalten. Bei mir läuft dieses Beispiel-Tool auch nicht, obwohl ich die Microsoft DAO 3.6 Object Library aktiviert habe. Beim Befehl DIM Feld AS NEW FIELD
bringt er bei mir die Fehlermeldung "Fehler beim kompilieren, Unzulässige Verwendung des Schlüsselwortes New". Keine Ahnung wieso. Im Beispiel wird es doch so gezeigt. Hast du ne Ahnung?

Anzeige
Problem gelöst, jetzt anderes Problem - HILFE! -
03.03.2003 14:29:44
Stefan

Ich habe das Problem gelöst, nur wäre es doch zu einfach wenn es kein nächstes Problem gäbe. Ich habe die Datenimport-Geschichte über eine Test-Datenbank ausprobiert, hat prima geklappt. Nur habe ich bei meinem Projekt das Problem, dass ich auf eine Datenbank zugreife, die durch eine MDW-Datei geschützt ist,d.h. ich muss im Quellcode den User und das Passwort mitliefern. Mit ADO kein Problem -> Conn.Open "[DB-Name]", "[User]", "[Passwort]"
Conn ist als "New ADODB.Connection" gedimmt. Wie mache ich das mit DAO? Ich kann doch nicht mit ADO und DAO zusammen arbeiten, oder?

Gruß Stefan

Anzeige
hier mein Testtool
03.03.2003 14:31:36
Stefan

Sub RouternamenImport()

Dim DB As Database
Dim Rst As Recordset
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
Dim DBPfad As String

DBPfad = "J:\Projekte\Land_Bw\LVN III Betrieb\Datenbank"
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

Set DB = OpenDatabase(DBPfad & "\router.mdb")

Set Rst = DB.OpenRecordSet("Router")

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
SQL = "UPDATE Router SET Routername = '" & RNamRef & "' WHERE PortID = '" & PIDRef & "'"
DB.Execute (SQL)
Next I

DB.Close

End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige