Estimado colega
delphi50jmb, si me lo permite, le propongo dos opciones de código. Le sugiero en lo posible utilizar parametros para pasar valores a sentencias SQL.
Clarifica mucho el código.
Código Delphi
[-]Opcion 1:
SQL_String.SQL.Clear;
SQL_String.SQL.Add('INSERT INTO TomaInvtario (Folio, Codigo, Nombre, ExistAct, Fisico)');
SQL_String.SQL.Add('SELECT :Folio as Codigo, Nombre, ExistAct, ExistTMP ');
SQL_String.SQL.Add('FROM Inventario');
SQL_String.SQL.Add('WHERE Inventario.Familia = :Familia');
SQL_String.ParamByName('Folio').AsString :=EdFolio.Text;
SQL_String.ParamByName('Familia').AsString:=EdFamilia.Text;
SQL_String.ExecSQL(False);
Opcion 2:
SQL_String.SQL.Clear;
SQL_String.SQL.Add('INSERT INTO TomaInvtario (Folio, Codigo, Nombre, ExistAct, Fisico)');
SQL_String.SQL.Add(Format('SELECT %s as Codigo, Nombre, ExistAct, ExistTMP',[QuotedStr(EdFolio.Text)]));
SQL_String.SQL.Add('FROM Inventario');
SQL_String.SQL.Add('WHERE Inventario.Familia = :Familia');
SQL_String.ParamByName('Familia').AsString:=EdFamilia.Text;
SQL_String.ExecSQL(False);
[QUOTE
En cuanto al error de primary key
Cita:
violation of PRIMARY or UNIQUE KEY
constraint "PK_TOMAINVTARIO" on table 'TOMAINVTARIO'
Problematic key value is ("FOLIO:" = 1, "CODIGO" = '7795320000122')
|
Es muy claro que ya existe un registro con esos atributos de Folio y Codigo, le sugiero comprueba la existencia de esos, realizando una consulta con esos parametros.
Saludos cordiales