lord-of-manor
Goto Top

Probleme mit der ODBC Abfrage unter Win7 64-Bit

Hallo Zusammen,

ich habe unter Win7 32-Bit ein VBS Script geschrieben das auch Funktioniert.
Jetzt soll es aber unter 64-Bit im Aufgaben Manager laufen, diese geht aber nicht mehr.

Teil Script welches unter 32-Bit läuft:

Option Explicit

Dim Conn, Cmd,rcs,objCommand,objupdate

Set Conn = CreateObject("ADODB.Connection")  
Set Cmd  = CreateObject("ADODB.Command")  
Set rcs  = CreateObject("ADODB.Recordset")  
Set objCommand = CreateObject ("ADODB.Command")  
Set objupdate = CreateObject ("ADODB.Command")  

Conn.CommandTimeout = 40

Conn.ConnectionString = "Driver={Informix-CLI 2.5 (32 Bit)};Service=1525;Persist Security Info=False;Data Source=datenbank"  
Conn.Open 
Cmd.ActiveConnection = Conn
Cmd.CommandType = 1
Cmd.CommandText = "select count(*) zaehler from btb_auftrag where ws_printed = 0"  
rcs.Open Cmd,, 1, 1


if rcs.Fields("zaehler") = 0 then  

bei "if rcs.Fields("zaehler") = 0 then" kommt dann die Fehlermeldung:
Fehler: Ausnahmefehler aufgetreten.
Code: 80020009
Quelle: (null)

kann mir jemand Helfen.

Vielen Dank
Gruß Ralf

Content-Key: 214162

Url: https://administrator.de/contentid/214162

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: Penny.Cilin
Penny.Cilin 13.08.2013 um 14:19:26 Uhr
Goto Top
Hallo Ralf,

funktioniert das Skript, wenn Du es manuell unter Windows 7 x64 startest?
Zudem verwende bitte die Codeformatierung, damit das Ganze übersichtlicher wird.


Grus Penny.
Mitglied: Lord-of-Manor
Lord-of-Manor 13.08.2013 um 14:26:30 Uhr
Goto Top
Hallo Penny.

Nein, da bekomme ich die selbe Meldung.
Und sorry wegen der Codeformatierung, die habe ich übersehen, obwohl ich extra geschaut hatte.

Es wird jetzt unter einer alten XP Maschine eingesetzt.
Bin aber dennoch für Tipps dankbar.

Gruß Ralf
Mitglied: Sauerkrautwurst
Sauerkrautwurst 13.08.2013 um 14:55:39 Uhr
Goto Top
Hi,

welche Art Datenbank verwendest du? Nicht zufällig DB2 oder SQL auf einer AS?

Grüße
Mitglied: Penny.Cilin
Penny.Cilin 13.08.2013 um 15:02:55 Uhr
Goto Top
Zitat von @Lord-of-Manor:
Hallo Penny.

Nein, da bekomme ich die selbe Meldung.
Und sorry wegen der Codeformatierung, die habe ich übersehen, obwohl ich extra geschaut hatte.

Es wird jetzt unter einer alten XP Maschine eingesetzt.
Bin aber dennoch für Tipps dankbar.

Gruß Ralf
Hallo Ralf,

vielleicht hilft Dir dieser Link Microsoft Support. Bei der x64 Variante muss man genau angeben, welche ODBC-Version (x86 / x64) man verwenden will. In der Vergangenheit hatte ich bei einem ähnlicher Problem einen Kollegen helfen können, indem er die richtige Variante genutzt hat. Defaultmäßig wird unter Win 7 x64 im Pfad "%SystemDrive%\Windows\System32" gesucht. Du müßtests evtl. den Pfad auf "%systemdrive%\Windows\SysWoW64" setzen.

Gruss Penny.
Mitglied: Dani
Dani 13.08.2013 um 16:27:41 Uhr
Goto Top
Moin,
Und sorry wegen der Codeformatierung, die habe ich übersehen, obwohl ich extra geschaut hatte.
Bitte nachholen.... ist in einer Minute erledigt.


Grüße,
Dani
Mitglied: Lord-of-Manor
Lord-of-Manor 13.08.2013 um 17:48:37 Uhr
Goto Top
Hallo Dani,
habe ich gemacht. Ich bin es von anderen Foren gewohnt, dass es es Button für die Codeformatierung gibt.
Und bin nicht davon ausgegangen, es per Steuercode einzufügen. Beim nächsten mal weiß ich Bescheid face-smile

Hallo Penny,
danke für den Link, werde es mir mal zu Gemüte ziehen.

Gruß und einen schönen Abend
Ralf
Mitglied: Biber
Biber 13.08.2013 um 18:33:48 Uhr
Goto Top
Moin Lord-Of-Manor,

falls es doch nichts x64-spezifisches ist: Fehlt vielleicht ein einfaches "rcs.moveFirst" vor der jetzigen letzten Zeile?

Sprich: wenn du am Ende/auf EOF stehst und/oder kein Datensatz zurückkam, dann müsste er auch abgrätschen.

Das Feld ws_printed wird ja wohl numerisch sein und nicht Char(1) oder so etwas?

Grüße
Biber
Mitglied: Lord-of-Manor
Lord-of-Manor 13.08.2013 aktualisiert um 18:46:35 Uhr
Goto Top
Hallo Biber,

wie gesagt, unter 32-Bit läuft das Script. Und ja, das Feld ws_printed ist numerisch.
Es prüft, ob der Auftrag bereits gedruckt wurde =1, wenn nein=0.

Wenn das Script durchgelaufen ist, wird der Zähler auf 1 gesetzt.
Das geht auch alles soweit. Nur eben nicht auf dem 64-Bit Rechner.

Daher gehe ich von einem x64 Problem aus.

Gruß Ralf
Mitglied: manuel-r
manuel-r 13.08.2013 um 22:29:41 Uhr
Goto Top
Das Problem dürfte am ODBC-Treiber liegen. Hab ich auf der Arbeit auch auf manchen Servern bzw. mit manche DBn. Geholfen hat mir bisher immer der Workarround die entsprechenden Scripte in der 32Bit-Umgebung laufen zu lassen indem ich sie einfach mit "\windows\syswow64\wscript.exe \pfadzumscript\meinscript.vbs" aufrufe.