Delphi - leer una secuencia

 
Vista:

leer una secuencia

Publicado por monica (6 intervenciones) el 09/02/2007 20:48:19
hola gente..como les va?
mi consulta es la sgte:
Tengo una secuencia creada en la base de datos postgres que me devuelve un numero, pero cuando no se como hacer desde la aplicacion para que me devuelva ese numero.. :(
Alguien me puede decir como se hace??
muchasss graciassss, monics
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:leer una secuencia

Publicado por BigLuis (713 intervenciones) el 10/02/2007 11:18:17
"Tengo una secuencia creada en la base de datos postgres que me devuelve un numero, pero cuando no se como hacer desde la aplicacion para que me devuelva ese numero.. :(
"
Perdona pero no entiendo nada. Si te devuelve un numero que quieres hacer para que te devuelva el numero ¿?. Afina la pregunta e intentaremos echarte una mano.
Suerte
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

RE:leer una secuencia

Publicado por monica (6 intervenciones) el 10/02/2007 22:18:06
Oki, a ver si me puedo explicar mejor..
Tengo este codigo para leer el numero de la secuencia q está en la base de datos, pero no anda, o sea no levanta el numero..

procedure Tfmain.bgrabarpersonaClick(Sender: TObject);
var id_pers :integer;

begin
DMConexion.ZQuery1.Close;
DMConexion.ZQuery1.SQL.Add('SELECT nextval (:nuevoIdPers)');

DMConexion.ZQuery1.ExecSQL;
DMConexion.ZQuery1.Open;
if not DMConexion.DataSource1.DataSet.IsEmpty then
id_pers:=DMConexion.ZQuery1.Params.Items[0].asInteger;
end;

nuevoIdPers es la secuencia q me devuelve un nuevo identificador.
y en id_pers quiero guardar ese numero pero no lo guarda.,entra en el if y se queda en 0.

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

RE:leer una secuencia

Publicado por BigLuis (713 intervenciones) el 11/02/2007 11:11:23
Ignoro que tipo de base de datos devuelve en un parametro un valor a no ser que sea en una Store Procedure (ojo he dicho ignoro no que no exisata o que no pueda ser). Tambien desconozco la funcion, supongo que propia de la BD, "nextval". Tampoco entiendo que utilices ambos comandos ExecSQL y Open. Si se trata de solo devolver datos deberias utilizar Open y si vas a modificar, insertar, borrar etc ExecSQL.
Segun mis escasos conocimientos intenta hacerlo de la siguiente forma

DMConexion.ZQuery1.SQL.Add('SELECT nextval as NuevoValor');
DMConexion.ZQuery1.Open;
if not DMConexion.DataSource1.DataSet.IsEmpty then
id_pers:=DMConexion.ZQuery1.fields[0[.asInteger o bien
id_pers:=DMConexion.ZQuery1.fieldbyname('NuevoValor').asInteger;

Suerte
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

RE:leer una secuencia

Publicado por monica (6 intervenciones) el 11/02/2007 21:28:36
mil graciasssss :), segui probando y asi funciona:

DMConexion.ZQuery1.Close;
DMConexion.ZQuery1.SQL.Add('SELECT nextval "idpers"'); {idpers es la secuencia que me devuelve el prox valor unico}
DMConexion.ZQuery1.ExecSQL;
DMConexion.ZQuery1.Open;
if not DMConexion.ZQuery1.IsEmpty then
id_pers:=DMConexion.ZQuery1.Fields[0].AsInteger;

en postgres se pueden definir secuencias (son como store procedures) donde cada vez que le pedis el valor se autoincrementa sola, por lo que no hay que andar haciendo update del valor o insert del prox valor a devolver.

muchisimassssss graciassss nuevamente
mónica
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