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

Reply via email to