Ver Mensaje Individual
  #3  
Antiguo 01-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Reputación: 25
egostar Va camino a la fama
Hola

Me he tomado el atrevimiento de modificar tu función de la forma como yo la escribiría.

Código Delphi [-]
function TDM.GenerarId(Campo, NombreTabla, Condicion: string): Integer;
begin
  with Query1 do begin
     Close;
     SQL.Clear;
     if Condicion <> '' then
        SQL.Add('SELECT Max('+Campo+') AS MAXIMO FROM '+NombreTabla+
                ' WHERE '+Condicion)
     else SQL.Add('SELECT Max('+Campo+') AS MAXIMO FROM '+NombreTabla);
     Open;
     if RecordCount = 0 then
        Result := 1
     else Result := Fields[0].Value + 1;
     Close;
  end;
end;

Yo te recomiendo que hagas un trace dentro de esa función, tal vez hay algo no está bien en las variables que estas pasando.

Salud OS

Edito: He cambiado dos nombres que podrian tener efectos secundarios. TableName y KeyField.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 01-10-2008 a las 23:42:00.
Responder Con Cita