Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guardar variariable reeemplazando en el mismo registro (https://www.clubdelphi.com/foros/showthread.php?t=50165)

Petolansa 09-11-2007 21:59:15

Guardar variariable reeemplazando en el mismo registro
 
Gente por favor, ya no se que hacer realmente, siento que me estoy ahogando en un vaso de agua, lo siguiente es posible, se me ocurrio hacer una tablita que tiene un campo contador, que es una varable de tipo integer que ahi voy a ir guardando el ultimo numero de factura. Uso paradox. O sea le doy el valor de uno inicialmente y lo que quiero hacer es extraer ese uno y mostrsarlo en un caption , hasta ahi bien y una vez que posteo la factura lo que quiero hacer es aumentarle 1 y guardarlo asi me queda listo para la siguiente factura. quiero guardarlo en el registro reemplazando siempre el registro.
o sea que sea asi

Código:

contador
1

despues

Código:

contador
2

y asi...siucesivamente.


Código:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin

table1.edit;
table1.Last;
Label1.Caption:=inttostr(table1contador.Value);

end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
num:=Table1['contador'];
Table1['contador']:=num+1;
Table1.Post;
end;

end.

Al hacer click en el priemr boton me muestra el regsitro de mi tabla pero dsp al guardar la factura me da error me dice sataset not in insert or edit mode, y realmente no se porque.

desde ya muchas gracias..

egostar 09-11-2007 22:04:20

Hola petolansa

Yo use este código para incrementar un folio tal como lo estás haciendo tú.

Código Delphi [-]
Procedure TLector.SumaFolio;
var
  Folio: Integer;
  LineaSQL: String;
Begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select folio from folios');
  Query1.Open;
  Folio := Query1.Fields[0].AsInteger;
  lineaSQL := 'SET FOLIO = '+InttoStr(Folio);
  Query1.close;
  Query1.sql.clear;
  Query1.sql.add('UPDATE FOLIOS');
  Query1.sql.add(lineaSQL);
  Query1.execsql;
  Query1.Close;
End;

Espero te sirva.

Salud OS

Petolansa 09-11-2007 22:17:03

Gracias!, y para guardarlo a este procedimiento sumandole 1, como se haria en sql??

Gracias. Saludo

egostar 09-11-2007 22:19:07

Cita:

Empezado por Petolansa (Mensaje 245089)
Gracias!, y para guardarlo a este procedimiento sumandole 1, como se haria en sql??

Gracias. Saludo

:D, Se me fue una linea porque hacia otras cosas que no tenian caso que las pusiera :rolleyes:

Código Delphi [-]
  Folio := Query1.Fields[0].AsInteger;
  Folio := Folio + 1;
  lineaSQL := 'SET FOLIO = '+InttoStr(Folio);

Mea culpa, perdon.

Salud OS

Petolansa 09-11-2007 22:58:29

Disculpa mi ignorancia egostar, pero nunca use sql, como haria para poner este query, osea agregue un query, le di la dire de la bd, hasta ahi vamos, el tema es que yo quiero que en un formulario tengo un boton en el que quiero buscar el campo y plasmarlo en un caption y en otro boton guardar y ahi sumarle 1. tendria que dividir el codigo que me pasaste en dos partes?
O como se hace creo ese codigo como un procedimiento y lo llamo una vez?

Disculpas

Gracias

egostar 09-11-2007 23:05:03

Cita:

Empezado por Petolansa (Mensaje 245122)
Disculpa mi ignorancia egostar, pero nunca use sql, como haria para poner este query, osea agregue un query, le di la dire de la bd, hasta ahi vamos, el tema es que yo quiero que en un formulario tengo un boton en el que quiero buscar el campo y plasmarlo en un caption y en otro boton guardar y ahi sumarle 1. tendria que dividir el codigo que me pasaste en dos partes?
O como se hace creo ese codigo como un procedimiento y lo llamo una vez?

Disculpas

Gracias

Ok, si en ese caso si debes separar las instrucciones

Código Delphi [-]
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select folio from TUTABLA');
  Query1.Open;
  Folio := Query1.Fields[0].AsInteger;
  Query1.Close;
  Folio := Folio + 1;
  Label1.Caption := InttoStr(Folio);
end;

Procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Close;
  Query1.sql.clear;
  Query1.sql.add('UPDATE TUTABLA');
  Query1.sql.add('SET FOLIO = '+InttoStr(Folio));
  Query1.ExecSQL;
End;

Folio debe ser una variable general, ya no debe estar dentro de ningún procedimiento.

Salud OS

Petolansa 10-11-2007 02:27:18

Gracias egostar, realmente funciona de 10, yo le tenia miedo a sql pero realmente la logica no es tan complicada, al contrario es mas facil de lo que parece.

desde ya muchas gracias.;)

egostar 10-11-2007 02:40:13

Cita:

Empezado por Petolansa (Mensaje 245169)
Gracias egostar, realmente funciona de 10, yo le tenia miedo a sql pero realmente la logica no es tan complicada, al contrario es mas facil de lo que parece.

desde ya muchas gracias.;)

Que bueno que te sirvio, de hecho te recomiendo que trates de usar al máximo SQL y si puedes cambia a otra base de datos mas potente, puedes intentar con Firebird. Paradox es una base muy buena pero es de escritorio, Firebird te da mucho mas poder al hacer tus desarrollos.

Salud OS.

Caral 10-11-2007 02:59:20

Hola
Bueno para que te sirva solo como un ejemplo mas.
Código Delphi [-]
 QTemp.SQL.Text := 'Select Max(CodOrden) From OrdenProd';
 QTemp.Open;
 Edit2.Text  := IntToStr(QTemp.Fields[0].AsInteger+1);
Busca el máximo numero y le suma uno, en este caso lo presento en un edit.
Saludos

Petolansa 10-11-2007 04:18:28

La verdad es que observo que permamnente mente se recomienda migrar de base de datos y lo tengo en cuenta para el proximo proyectito, este es una tesis que es para presentar ahora en diciembre, pero luego me dedicare de lleno a firebird con d7.

muchas gracias y hasta mi proxima consulta jeje:D


La franja horaria es GMT +2. Ahora son las 19:39:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi