Ver Mensaje Individual
  #7  
Antiguo 22-01-2025
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 937
Reputación: 24
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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');

//Utilización de Parametros para pasar valores a la sentencia SQL.
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');

//Utilización de Parametros para pasar valores a la sentencia SQL.
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
Responder Con Cita