Delphi - memoria insucifiente en Delphi

 
Vista:

memoria insucifiente en Delphi

Publicado por marcos lopez (4 intervenciones) el 17/03/2003 13:38:13
Hola, hice un programa en DELPHI 6 que utiliza una tabla y al correrlo por primera vez todo corre normal, pero cuando lo corro por segunda vez me dice: "insuficient memory for this aplication", ¿Que estoy haciendo mal?. El codigo que uso es este (esta dentro de un boton):

procedure TfrmNuevop.cmdagregarClick(Sender: TObject);
var
id : integer;
begin
tblPacientes.Open;
tblPacientes.Last;

// si no hay registros que el id sea 1
// si ya hay registros que tome el id del ultimo y le sume 1
if not tblPacientes.IsEmpty then
id := tblPacientes.Fields[0].Value + 1
else
id := 1;

tblPacientes.insert; // Ponemos la tabla en modo insertar
tblPacientes.fieldbyname('id').asinteger := id;
tblPacientes.fieldbyname('nom').asstring := txtNombre.text;
tblPacientes.fieldbyname('ape').asstring := txtApe.text;
tblPacientes.fieldbyname('status').AsBoolean := true;
tblPacientes.post; // Guardamos los cambios.
txtNombre.Text := '';
txtApe.Text := '';
showmessage('El Nuevo paciente ha sido dado de alta');
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:memoria insucifiente en Delphi

Publicado por BigLuis (463 intervenciones) el 17/03/2003 16:24:51
Yo no veo motivo en el codigo que andas para que te quedes sin memoria, pero veo un peligro muy grande en la inserción: Supongo que no vas a utilizar relaciones maestro-detalle porque si es asi se te van a crear incossistencias a la primera de cambio ya que supongo que el ID es la clave primaria e irrepetible.Si borras el ultimo registro por el motivo que sea, al siguiente que insertes le vas a asignar el mismo numero que tenía el anterior y eso hay que evitarlo por todos los medios.No se que tipo de BD utilizas pero si no contampla los campos autoincrementales usa un generador o bien una tabla aparte con un campo unico ID en el que vayas incrementando su valor a cada registro que insertes en la otra tabla y ese valor se lo asignas al ID del nuevo registro. Asi al ser independientes la tabla de numeros ignora si se han borrado o no y siempre le da el siguiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar