Live-Forum - Die aktuellen Beiträge
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

Datenbankimport

Datenbankimport
28.02.2003 13:59:41
Stefan
Hi Forum,

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



13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Datenbankimport
28.02.2003 14:05:25
Michael Scheffler

Hallo,

und was funktioniert nicht?

Gruß

Micha

Achso: warmum bleibst Du nicht im Faden?
28.02.2003 14:09:45
Michael Scheffler



Re: Achso: warmum bleibst Du nicht im Faden?
28.02.2003 14:15:20
Stefan

Es funkioniert folgendes nicht:
Im Teil...

RS.Fields("Namen") = RNamRef

...wird der Wert aus RNamRef nicht dem Feld "Namen" zugewiesen
und in der Datenbank auch nicht eingefügt. Geht nicht. Und warum, das ist mein Problem.

Stefan.

Re: Achso: warmum bleibst Du nicht im Faden?
28.02.2003 14:22:08
Nike

Hi,
deine Abrage ist nunmal nur das, eine Abfrage,
um die Records zu verändern muß du ein Update
der Quelle fahren,
z.B.
db.Execute "Update deine_Tabelle set [Deine_Tabellenspalte] = '" & bezeichnug & "' Where [Spaltenname_Deines_Autowertes]= " & id_nummer & " ;"
hier gefunden
in diesem Forum

Bye

Nike

Anzeige
Re: Achso: warmum bleibst Du nicht im Faden?
28.02.2003 14:22:29
Michael Scheffler

Hallo Stefan,

der Code unten funktioniert. Ich würde ihn ja sonst nicht posten.

Versuche doch mal, das nachzuvollziehen. Den Code für das Öffnen und schleißen der Datei habe ich in anderen Sus, aber wenns hilft, poste ich auch noch etwas.


Gruß

Micha

PS: Ich mache genau das, was Du möchtet, Access-DB mit Excel füllen.

Re: Access Code
28.02.2003 14:24:23
Nike

Hi Micha,
poste ruhig,
ich glaub jeder Fetzen zum Thema Access
insbesonderen in Kombination mit Excel wird gern gelesen ;-)

Bye

Nike

Re: Achso: warmum bleibst Du nicht im Faden?
28.02.2003 14:36:21
Stefan

Hi Nike,

und wo platziere ich "db.execute..." hin?
Direkt über RS.Fields("Namen") = RNamRef ?
Meine SQL-Abfrage muss aber gleich bleiben, da ich
ja die Daten erst einmal selectieren muss, oder?

Gruß Stefan.

Anzeige
Codeschnppsel
28.02.2003 14:36:28
Michael Scheffler



Re: Achso: warmum bleibst Du nicht im Faden?
28.02.2003 14:37:40
Stefan

Hi Micha,

du meinst, dass mein Code funktioniert? Das kann nicht sein.
Das geht definitiv nicht.

Gruß STefan

Mein Code!!!
28.02.2003 15:14:08
Michael Scheffler



Frage bzgl. SQL
28.02.2003 15:30:24
Stefan

Hallo Micha, hallo Nike,

folgendes würde mir sehr weiterhelfen, denn das Problem liegt an meinem SQL-String, dieser sieht derzeit so aus:

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

Ich möchte "Hardware.Namen" updaten, als Beziehungsvariable dient "Ports.Nummer" (also die ID, die es auch in dem Excel-File
gibt). Wie baue ich den SQL-String ala Update (anstatt select) auf? Die INNER JOINs machen die Sache etwas schwierig.

Kannst du mir hier weiterhelfen?


Anzeige
Re: Frage bzgl. SQL
28.02.2003 15:53:57
Michael Scheffler

Hallo,

das weiß ich auch nicht so genau. SQL ist nicht meine Spzialstrecke. In einer einfachen Tabelle gehts.

Gruß

Micha

Re: Frage bzgl. SQL
28.02.2003 15:56:43
stefan

Hi Micha,

kannst Du mir Dein Tool mal komplett zumailen, so dass
ich das mal testen kann? Wäre echt super:

Stefan.Sasse@web.de

Gruß Stefan.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige