Delphi - problema con funciones sql en delphi

 
Vista:

problema con funciones sql en delphi

Publicado por truky (9 intervenciones) el 09/12/2004 11:53:54
hola a todos de nuevo, primero dar las gracias a las ayudas anteriormente que me prestaron, ahora mi siguiente problema es q kiero realizar funciones sql dentro del delphi, tipo select max(num) from...... El caso es q me compila y todo, pero luego no puedo acceder a ese campo o me devuelve q no se han obtenido ninguna fila, tb intente crearme un campo persistente, y q almacenara ese valor en ese campo, y tampoco me funcionó, asi q si alguien tiene alguna sujerencia me haria un favorcillo
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:problema con funciones sql en delphi

Publicado por arantxa (1 intervención) el 09/12/2004 12:40:58
hola

A lo mejor el problema en el ejemplo que pones: \"select max(num) from...\", es el siguiente t lo comento con un ejemplo.

Usando el componente TQuery(le llamo qGeneral porque suelo usarlo varias veces y ejecutó las sentencias en determinadas ocasiones) yo lo que hago muchas veces es definir una variable String global normalmente le llamo Consulta y suelo realizar lo siguiente:

dentro del procedure se pondría:

procedure TForm1.nombreprocedure;
var nummax:integer;
begin
with qGeneral do
begin
Close;
consulta := \'select max(num) from TABLA\';
SQL.Clear; //por si hubiese otra sentencia
SQL.Add(consulta);
ExecQuery;
Transaction.CommitRetaining;

//para coger el valor
nummax := FieldByName[\'max\'].AsInteger;

{nummax sería entero y se pone el nombre del campo max ya que no hemos definido un nombre para ese campo al
devolver me refiero a que en vez de ponerlo como arriba sería: consulta:= \'select max(num) nombre from TABLA\'}

end;

Espero t pueda guiar este ejemplo.


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:problema con funciones sql en delphi

Publicado por truky (9 intervenciones) el 09/12/2004 12:59:23
Hola gracias por tu ayuda, todavia no lo he probado xq estoy en el trabajo, jejejej, pero tengo una duda, cuando asignas la cadena para q se ejecute, como puedo ponerle la filtracion por where? con el consulta.paramByName(\'.....\').as.....? o se lo puedo meter a pelo, tipo where cod = tablacod.value?, gracias
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:problema con funciones sql en delphi

Publicado por Arantxa (3 intervenciones) el 10/12/2004 11:16:52
Mira con el ejemplo de ayer:

procedure TForm1.nombreprocedure;
var nummax:integer;
begin
with qGeneral do
begin
Close;
consulta := 'select max(num) from TABLA where identificador ='+IntToStr(id)+';
//todo se realiza así (haciendo cadenas de texto ok, si pones más de un campo igual haciendo correctamente los separadores y su conversión a Texto

//sino otra opción que te puede ser más cómoda es realizarla dentro del Query, entonces si que haríamos lo del paso de parametros
SQL.Clear; //por si hubiese otra sentencia
SQL.Add(consulta);
ExecQuery;
Transaction.CommitRetaining;

//para coger el valor
nummax := FieldByName[\'max\'].AsInteger;

end;

Truky si lo haces dentro de la misma Query ya sabrás que pondríamos la sentencia directamente (los parámetros serían los que llevan los ? (no se si lo sabes por eso lo pongo)) Ejemplo:
si dentro de la consulta QC tuviesemos la siguiente sentencia:

select * from p_organigrama_prj_l
where planregistre = ?planregistre and popregistre = ?popregistre

entonces desde el código haríamos:

QC.close;
QC.Params.ByName['PLANREGISTRE'].AsInteger := PLANREG;
QC.Params.ByName['POPREGISTRE'].AsInteger := DBEdit1.Field.AsInteger;
QC.ExecQuery;
QC.Transaction.CommitRetaining ;

Eso es todo Adèu
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