ich habe in Progress eine MS-SQL-DB verbunden. Das hat funktioniert. Möchte ich nun eine Query auf eine Tabelle absetzen, kommt beim OPEN oder EXECUTE die Fehlermeldung "...ungültiger Objektname <TABELLENNAME>. Error Code: 0x80020009...". Lass ich das Ganze in einem VBS laufen, funktioniert das astrein.
Nachfolgend mal der Progress-Code...
def var gvch_dbconn as com-handle no-undo.
def var gvch_dataset as com-handle no-undo.
def var gvc_provider as character no-undo.
def var gvc_server as character no-undo.
def var gvc_dbname as character no-undo.
def var gvc_userid as character no-undo.
def var gvc_userpwd as character no-undo.
def var gvc_connect as character no-undo.
def var gvc_befehl as character no-undo.
def var gvi_zaehler as integer no-undo.
ASSIGN
gvc_provider = 'SQLOLEDB':U
gvc_dbname = 'HOMAG':U
gvc_server = '.':U
gvc_userid = 'sa':U
gvc_userpwd = 'istist':U
gvc_connect = 'provider=':U + gvc_provider + ';':U
+ 'server=':U + gvc_server + ';':U
+ 'datasource=':U + gvc_dbname.
create "ADODB.Connection" gvch_dbconn.
create "ADODB.RecordSet" gvch_dataset.
gvch_dbconn:open (gvc_connect,gvc_userid,gvc_userpwd,0) no-error.
if error-status:error or error-status:num-messages > 0
then do:
message "Connect-Fehler".
do gvi_zaehler = 1 to error-status:num-messages:
message error-status:get-number(gvi_zaehler) error-status:get-message(gvi_zaehler) view-as alert-box.
end.
end.
else message "Connect-OK".
/*
gvc_befehl = 'SELECT * FROM StornoAuslagerung':U.
gvc_befehl = 'SELECT * FROM GetBestand()':U.
*/
gvc_befehl = 'SELECT * FROM AAusDatei1':U.
gvch_dataset:OPEN(gvc_befehl,gvch_dbconn, 3, 1, 1) no-error.
if error-status:error or error-status:num-messages > 0
then do:
message "Open-DS-Fehler".
do gvi_zaehler = 1 to error-status:num-messages:
message error-status:get-number(gvi_zaehler) error-status:get-message(gvi_zaehler) view-as alert-box.
end.
end.
else message "Open-DS-OK".
gvch_dataset:close no-error.
release object gvch_dbconn no-error.
release object gvch_dataset no-error.
...Fehlermeldung...
...und ein Screenshot von der DB...
...und hier das VBS...
'*********************************************************************
' Connectionstring für Verbindung zum Server
'*********************************************************************
Const OdbcName = "Provider=SQLOLEDB;Datasource=.;DATABASE=HOMAG;UID=sa;PWD=istist"
Dim PathArgs(0) ' Programm-Argument
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set ObjEnv = WSHShell.Environment("Process")
Set ObjArgs = WScript.Arguments
Set FSO = CreateObject("Scripting.FileSystemObject")
Verbindung zur Datenbank aufbauen
Set objData = CreateObject("ADODB.Connection")
objData.Open Odbcname
' ADO Recordset erzeugen
Set objRS = CreateObject("ADODB.RecordSet")
On Error Resume Next
'*********************************************************************
' Tabelle StornoAuslauslagerung auslesen
'*********************************************************************
objRS.ActiveConnection = objData
'objRS.Source = "SELECT * FROM StornoAuslagerung"
objRS.Source = "SELECT * FROM AAusDatei1"
'adOpenKeyset Type
objRS.CursorType = 1
objRS.Open
MsgBox " Anzahl Datensaetze in Tabelle:" & objRS.RecordCount
objRS.Close
objData.Close
Da das VBS funktioniert, nehme ich mal an, dass es nicht an irgendwelchen Rechten in der DB liegen kann. Was ist dann also an meinem Code falsch bzw. was fehlt?
1000 Dank schon mal.
Ingo