PDA

Ver la Versión Completa : Guardar variariable reeemplazando en el mismo registro


Petolansa
09-11-2007, 21:59:15
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

contador
1

despues

contador
2


y asi...siucesivamente.


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ú.


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
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:


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
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


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
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.

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