Insertar registro dificultoso
Estoy usando un datasource1, un query1, y un dbgrid,
la base de datos tiene 3 campos:
Id alfanumérico, nombre memo, e importe que es integer.
Y quiero insertarle un registro del contenido de un edit(edtid), memo(mmnombre), y un edit(edtimporte), en los tres campos.
Pero no puedo, con lo que he esrito me tira un error de type mistmatch en expression, como si el tipo de los parámetros de la sentencia sql no estuveran declarados, los he declarado de muchas formas y sigo con el error
¿Cómo lo puedo hacer?
procedure TForm1.cmbinsert2Click(Sender: TObject);
begin
with query1 do
begin
close;
SQL.clear;
SQL.add('INSERT INTO "db.db"');
sql.add('(id,Nombre,Importe)');
sql.add('VALUES(:id,:nombre,:importe)');
Params[0].DataType:=ftinteger;
Params[1].DataType:=ftmemo;
Params[2].DataType:=ftinteger;
params.Items[0].Asinteger:=strtoint(edtid.text);
params.Items[1].AsMemo:= mmnombre.text;
params.Items[2].Asinteger:=strtoint(edtimporte.text);
ExecSQL;
Refresh;
end;
end;
También he probado así con una tabla con dos campos uno alpfanumerico y el otro integer y el mismo error
procedure TForm1.cmbinsertClick(Sender: TObject);
begin
with query1 do
begin
close;
sql.Clear;
sql.add('insert into db');
sql.Add('(Id,Numero)');
sql.add('Values(:id,:numero)');
ParamByName('id').Value:= strtoint(edtid.text);
ParamByName('numero').Value:= strtoint(edtnumero.text);
open;
end;
end;
la base de datos tiene 3 campos:
Id alfanumérico, nombre memo, e importe que es integer.
Y quiero insertarle un registro del contenido de un edit(edtid), memo(mmnombre), y un edit(edtimporte), en los tres campos.
Pero no puedo, con lo que he esrito me tira un error de type mistmatch en expression, como si el tipo de los parámetros de la sentencia sql no estuveran declarados, los he declarado de muchas formas y sigo con el error
¿Cómo lo puedo hacer?
procedure TForm1.cmbinsert2Click(Sender: TObject);
begin
with query1 do
begin
close;
SQL.clear;
SQL.add('INSERT INTO "db.db"');
sql.add('(id,Nombre,Importe)');
sql.add('VALUES(:id,:nombre,:importe)');
Params[0].DataType:=ftinteger;
Params[1].DataType:=ftmemo;
Params[2].DataType:=ftinteger;
params.Items[0].Asinteger:=strtoint(edtid.text);
params.Items[1].AsMemo:= mmnombre.text;
params.Items[2].Asinteger:=strtoint(edtimporte.text);
ExecSQL;
Refresh;
end;
end;
También he probado así con una tabla con dos campos uno alpfanumerico y el otro integer y el mismo error
procedure TForm1.cmbinsertClick(Sender: TObject);
begin
with query1 do
begin
close;
sql.Clear;
sql.add('insert into db');
sql.Add('(Id,Numero)');
sql.add('Values(:id,:numero)');
ParamByName('id').Value:= strtoint(edtid.text);
ParamByName('numero').Value:= strtoint(edtnumero.text);
open;
end;
end;
1 Respuesta
Respuesta de darkmanx
1