First of all, the DIC_ID-Field is the first field in your table definitio=
n,
thus it is the first item in your Fields-Collection in the Recordset of
ODBC. As DIC_ID is a SERIAL - Field, you should start inserting your data
from index 1.
Next thing is, your table definition has 7 Cols, your array has only got =
4.
(Gerald)
----- Original Message -----
From: Micha=B3 W=F3jcik
To: Sapdb. General
Sent: Monday, March 31, 2003 3:51 PM
Subject: Wrong number of parameters
When I try to insert row into table using ADO Recordset I receive message
"[SAP AG][SQLOD32 DLL]Wrong number of parameters."
Could you tell me what is wrong?
I use following Delphi procedure:
----------------------------------------------
procedure TForm1.StartButtonClick(Sender: TObject);
var
Conn : Connection;
Rs : Recordset;
Fields : OleVariant;
Values : OleVariant;
Query : String;
RecordsAffected : OleVariant;
begin
Conn :=3D CoConnection.Create;
Conn.CommandTimeout :=3D 2400;
Conn.Open('Provider=3DMSDASQL;DSN=3DKr_MHF_SAP', 'admin', 'pwd', 0);
Query:=3D'SELECT * FROM Dictionary WHERE Dic_Name=3D''DICT_CARD''';
Rs :=3D CoRecordset.Create;
Rs.CursorLocation :=3D adUseServer;
Rs.Open(Query, Conn, adOpenDynamic, adLockOptimistic, adCmdText);
if Rs.EOF then
begin
Fields :=3D VarArrayCreate([0, 3], varVariant);
Values :=3D VarArrayCreate([0, 3], varVariant);
Fields[0] :=3D 'Dic_Name';
Values[0] :=3D 'DICT_CARD';
Fields[1] :=3D 'Dic_Caption';
Values[1] :=3D 'DICT_CARD';
Fields[2] :=3D 'Dic_Version';
Values[2] :=3D 0;
Fields[3] :=3D 'Dic_Content';
Values[3] :=3D 'DESCRIPTION';
Rs.AddNew(Fields, Values);
end;
Rs.Close;
Rs :=3D nil;
Conn.Close;
Conn :=3D nil;
end;
----------------------------------------------
But when I use this procedure, everything is fine:
----------------------------------------------
procedure TForm1.StartButtonClick(Sender: TObject);
var
Conn : Connection;
Fields : OleVariant;
Values : OleVariant;
Query : String;
RecordsAffected : OleVariant;
begin
Conn :=3D CoConnection.Create;
Conn.CommandTimeout :=3D 2400;
Conn.Open('Provider=3DMSDASQL;DSN=3DKr_MHF_SAP', 'admin', 'pwd', 0);
Query :=3D 'INSERT INTO Dictionary (Dic_Name, Dic_Caption, Dic_Version,
Dic_Content) VALUES (''DICT_CARD'', ''DICT_CARD'', 0, ''DESCRIPTION'')';
Conn.Execute(Query, RecordsAffected, adCmdText);
Conn.Close;
Conn :=3D nil;
end;
----------------------------------------------
Table definition is:
CREATE TABLE "ADMIN"."DICTIONARY"
(
"DIC_ID" Integer DEFAULT SERIAL (1),
"DIC_NAME" Varchar (50) ASCII NOT NULL UNIQUE,
"DIC_CONTENT" Long ASCII,
"DIC_VERSION" Integer NOT NULL,
"DIC_CAPTION" Varchar (255) ASCII,
"DIC_PATHSEPARATOR" Varchar (10) ASCII,
"DIC_CONFIG" Long ASCII,
PRIMARY KEY ("DIC_ID")
)
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general