Ich habe in D5 die msdado15.dll importiert und benutze die ADODB_TLB.pas um in meiner Anwendung auf eine Access 97 Datenbank zuzugreifen.
Als Connect-String nehme ich
sConn1:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;User ID=;Password=;Data Source=C:\Tfn\tfn.mdb;';
Das Öffnen mit Conn.Open(sConn1,'Admin','',adConnectUnspecified); klappt.
Wenn ich nun eine parameterisierte Abfrage öffnen will habe ich zwei Probleme:
1. Nach Cmd.Parameters.Refresh ist Cmd.Parameters.Count=0
Erst nach dem Append ist der Count auf 1
Cmd:=ADODB_TLB.CoCommand.Create;
Cmd.CommandText:='[+TfnSelDocDescriptorsAll]';
Cmd.CommandType:=ADODB_TLB.adCmdStoredProc;
Cmd.Set_ActiveConnection(Conn);
Cmd.Parameters.Refresh;
if Cmd.Parameters.Count>0 then
for j:=0 to Cmd.Parameters.Count do begin
s:=Cmd.Parameters[j].Name;
ListBox1.Items.Add(s);
end;
Cmd.Parameters.Append(Cmd.CreateParameter
'Code',adInteger,adParamInput,SizeOf(Integer),i));
RS.Open(Cmd,EmptyParam,adOpenStatic,adLockReadOnly ,adCmdStoredProc);
if RS.RecordCount>0 then RS2List(RS);
2. Wenn ich einen Parameter vom Access-Typ Text habe, klappt das Append nicht. Ich benutze in diesem Fall den Typ adParamInput und Length(w), wobei w ein WideString ist.
Bin ich zu blöd, oder was?
Als Connect-String nehme ich
sConn1:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;User ID=;Password=;Data Source=C:\Tfn\tfn.mdb;';
Das Öffnen mit Conn.Open(sConn1,'Admin','',adConnectUnspecified); klappt.
Wenn ich nun eine parameterisierte Abfrage öffnen will habe ich zwei Probleme:
1. Nach Cmd.Parameters.Refresh ist Cmd.Parameters.Count=0
Erst nach dem Append ist der Count auf 1
Cmd:=ADODB_TLB.CoCommand.Create;
Cmd.CommandText:='[+TfnSelDocDescriptorsAll]';
Cmd.CommandType:=ADODB_TLB.adCmdStoredProc;
Cmd.Set_ActiveConnection(Conn);
Cmd.Parameters.Refresh;
if Cmd.Parameters.Count>0 then
for j:=0 to Cmd.Parameters.Count do begin
s:=Cmd.Parameters[j].Name;
ListBox1.Items.Add(s);
end;
Cmd.Parameters.Append(Cmd.CreateParameter
'Code',adInteger,adParamInput,SizeOf(Integer),i));
RS.Open(Cmd,EmptyParam,adOpenStatic,adLockReadOnly ,adCmdStoredProc);
if RS.RecordCount>0 then RS2List(RS);
2. Wenn ich einen Parameter vom Access-Typ Text habe, klappt das Append nicht. Ich benutze in diesem Fall den Typ adParamInput und Length(w), wobei w ein WideString ist.
Bin ich zu blöd, oder was?
Comment