Anzeige
Archiv - Navigation
264to268
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
264to268
264to268
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SQL über VBA

SQL über VBA
10.06.2003 10:43:41
Alf
Hallo Freunde!

Ich möchte über VBA ein SQL-Update auf einer Oracle-DB mittels ODBC-Verbindung durchführen. Da ich noch nie damit gearbeitet habe, bin ich grad dabei, mir die Zähne auszubeißen und die letzten Haare zu verlieren...

Folgendes habe ich versucht:

Dim dbs As Database
Dim qdf As QueryDef
Set dbs = OpenDatabase("")
Set qdf = dbs.CreateQueryDef("")
With qdf
.Connect = "ODBC;DSN=DB;UID=abc;PWD=abc;APP=Microsoft® Query;DATABASE=LOGICAL;Network=DBMSSOCN"
.sql = "UPDATE Artikelstamm SET Auslauf = 1 WHERE Hauptgruppe != 'DIENSTLEISTUNG'"
.sql = "COMMIT"
End With
dbs.Close

Bekomme keine Fehlermeldung, es funkt aber auch nicht. Ich hoffe, es kann mir irgendwer helfen.

Vielen Dank
Alf



7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: SQL über VBA
10.06.2003 13:17:37
Alf

Hallo Nike!

Schön, gleich von Dir "bedient" zu werden, nachdem ich nach sooo langer Zeit wieder mal reinschau. War jetzt elendslang auf Heimaturlaub in Melmark... ;-)

Hab die Threads und sonstigen Links durchgeschaut. Finde aber überall nur Select-Befehle, die abgesetzt werden sollen, nirgends ein Update. Weiß jetzt nicht, ob ich da dennoch ein Recordset anlegen muß oder nicht. Bin nämlich in Oracle und sonstigen SQL-DBen eine echte Niete. Wäre mir sehr geholfen, wenn Du ev. noch mal einen Blick auf meinen Programmierversuch werfen könntest.

Hoffe, bei Dir ist alles ok. Melde mich sicher bald mal per Mail.

Ciao
Alf


Anzeige
Re: SQL über VBA
10.06.2003 13:47:49
Nike

Hi Alf,

Du hast erst mal ne DB, dann ne Querydef, die dann einen
Recordset ergibt, der mit CopyFromRecordset übertragen wird...

ich kann's schlecht hier ausprobieren, aber vielleicht so:

With qdf
.Connect = "ODBC;DSN=DB;UID=abc;PWD=abc;APP=Microsoft® Query;DATABASE=LOGICAL;Network=DBMSSOCN"
.sql = "UPDATE Artikelstamm SET Auslauf = 1 WHERE Hauptgruppe != 'DIENSTLEISTUNG'"
'.COMMIT
'oder eher
.execute
End With
dbs.Close

melde mal, inwieweit das so hinhaut...

Bye

Nike

P.S. Echt lustig, wir hatten uns gerade die Tage mal wieder
an Wien und seine Bewohner erinnert, bei diesem tollen Wetter
und so ;-)

Anzeige
Re: SQL über VBA
10.06.2003 14:16:24
Alf

Hallo Nike!

Na, dann nichts wie nach Wien mit Dir. Ist ja schon wieder ne Weile her, seitdem wir uns gesehen haben. (2 Jahre?, 3 Jahre?).

Danke für Deinen Vorschlag. Aber bei .execute meckert er mich an, daß eine Auswahlabfrage nicht durchgeführt werden kann (Laufzeitfehler 3065)... :-(

Alf

Re: SQL über VBA
10.06.2003 14:31:36
Nike

Hi,
kannst du die Query nicht im Oracel hinterlegen,
und dann mit qry.Parameters dann aus Excel bestücken
und entsprechend auch starten???

so wie hier:
http://xlarchiv.herber.de/52to56/t52331.htm

Bye

Nike

P.S. Oh ja, erinnere mich nicht wie fix die Zeit vergeht,
aber jetzt wieder im Schatten was Kühles zischen
wär echt cool ;-)

Anzeige
Re: SQL über VBA
10.06.2003 16:47:27
Alf

Hallo Nike!

Hab aus dem letzten Thread folgendes zusammengebastelt:

Dim ws As DAO.Workspace
Dim sql As String
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim ConnectStr As String
Set ws = DBEngine.CreateWorkspace("TEST", "abc", "abc", dbUseODBC)
sql = "UPDATE Artikelstamm SET Auslauf = 1 WHERE Hauptgruppe <> 'DIENSTLEISTUNG'"
ConnectStr = "ODBC; DATABASE=LOGICAL; UID=abc; PWD=abc; DSN=DB"
Set db = OpenDatabase("", False, False, ConnectStr)
Set qdf = db.CreateQueryDef("")
With qdf
.Connect = ConnectStr
.sql = sql
Set rs = .OpenRecordset()
rs.MoveLast
MsgBox rs.RecordCount
End With
db.Close

Komme bis zu OpenRecordset und bekomme dann die Fehlermeldung, daß die ODBC-Verbindung fehlgeschlagen ist. Sollten uns tatsächlich im Schatten was Kühles reinhauen. Wäre erfolgreicher als meine Versuche...

Alf


Anzeige
Re: SQL über VBA
11.06.2003 08:53:44
Nike

Hi,

With qdf
.Connect = ConnectStr
.sql = sql
Set rs = .OpenRecordset()
rs.MoveLast
MsgBox rs.RecordCount
End With

der RS gibt die durch die update Funktion betroffenen Werte zurück...
daher müßte es dorch irgendwie mit
qdf.execute oder .commit oder so auch ausgeführt werden...

In diesem Thread wird am Ende noch auf Treiberunterschiede hingewiesen, vielleicht greift das hier auch?

Bye

Nike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige