que hay amigos aqui estoy con un problema tengo un dbgrid al cual agrego registros y los guardo en mi base de datos en mysql, hasta ahi todo bien el problema lo tengo cuando esos datos los vuelvo a mostrar en ese dbgrid y por decir agrego ese registro y guardo me vuelve a guardar todos, como le puedo hacer para que si agrego uno nomas me grabe ese y no los demas que ya estan guardados en la base de datos el codigo con el que guardo es el siguiente:
Código Delphi
[-]DBGrid1.DataSource.DataSet.First;
While not (DBGrid1.DataSource.DataSet.Eof) do
begin
query.SQL.Clear;
query.Close;
query.SQL.Add
('insert into entradas( serie, folio, fecha, codigo, nombre, cantidad, precio, importe, id, documento, unidad) ' +
' values(: pserie, : pfolio, : pfecha, : pcodigo, : pnombre, : pcantidad, : pprecio, : pimporte, : pid, : pdocumento, : punidad) ' +
'on duplicate key update nombre=: pnombre ' );
query.ParamByName('pserie').Value:=DBGrid1.DataSource.DataSet.FieldByName('serie').value;
query.ParamByName('pfolio').Value:=DBGrid1.DataSource.DataSet.FieldByName('folio').value;
query.ParamByName('pfecha').Value:=DBGrid1.DataSource.DataSet.FieldByName('fecha').value;
query.ParamByName('pcodigo').Value:=DBGrid1.DataSource.DataSet.FieldByName('codigo').value;
query.ParamByName('pnombre').Value:=DBGrid1.DataSource.DataSet.FieldByName('nombre').value;
query.ParamByName('pcantidad').Value:=DBGrid1.DataSource.DataSet.FieldByName('cantidad').value;
query.ParamByName('pprecio').Value:=DBGrid1.DataSource.DataSet.FieldByName('precio').value;
query.ParamByName('pimporte').Value:=DBGrid1.DataSource.DataSet.FieldByName('importe').value;
query.ParamByName('pid').Value:=DBGrid1.DataSource.DataSet.FieldByName('id').value;
query.ParamByName('pdocumento').Value:=DBGrid1.DataSource.DataSet.FieldByName('documento').value;
query.ParamByName('punidad').Value:=DBGrid1.DataSource.DataSet.FieldByName('unidad').value;
query.ExecSQL;
DBGrid1.DataSource.DataSet.Next;
end;