Ir al contenido


Foto

mostrar registros en un dbgrid


  • Por favor identifícate para responder
13 respuestas en este tema

#1 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 01:07

que hay camaradas aqui con un problemita, quiero mostrar registros en un db grid pero solo los que contengan por asi decirlo jornada1 y torneo 3, con el codigo que intento no respeta el rango y me muestra todo lo de la jornada 1 el codigo es el siguiente

 datos.queryrol.SQL.Clear;
  datos.queryrol.SQL.Text :=  'SELECT * FROM roles WHERE jornada =:jornada and torneo =:torneo  ORDER BY folio ASC';
  datos.queryrol.ParamByName('jornada').Asinteger := StrToIntDef(jornada.Text, 0);
  datos.queryrol.ParamByName('torneo').Asinteger := StrToIntDef(torneo.Text, 0);

  datos.queryrol.Open;


tengo el dbgrid conectado a un datasource, el datasource esta ligado a un query
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 21 agosto 2013 - 01:31

Saludos.

No veo el problema que indicas, debido a que le pasas el valor por parámetros que esta correcto según el código.

¿Has probado averiguar el valor de jornada.Text y torneo.Text, para luego ejecutar la sentencia SQL con tu herramienta CASE?

Una pequeña sugerencia, por lo que muestras en el código no estas cerrando el TDataSet antes de la llamada del método Clear así que sería bueno ejecutar el método Close antes.
  • 0

#3 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 21 agosto 2013 - 01:34

Dos sugerencias:

  • Limpia los parámetros de tu query.
  • Limpia el SQL antes de ingresarle un nuevo código.

Y personalmente, prefiero generar un query sin parámetros, siento que es un poco más controlable.
  • 0

#4 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 21 agosto 2013 - 03:36

Amigo edgar_prospero, si ya construyes tu sentencia de manera dinámica, porqué no hacerlo sin parámetros, como dice TiammatMX ?

Algo así ?



delphi
  1.   jornada := StrToIntDef(jornada.Text, 0);  // variable de tipo entero
  2.   torneo := StrToIntDef(torneo.Text, 0);  // variable de tipo entero
  3.  
  4.   datos.queryrol.Close;
  5.   datos.queryrol.SQL.Text := 'SELECT * FROM roles WHERE jornada = '+IntToStr(jornada)+' and torneo = '+IntToStr(torneo)+' ORDER BY folio ASC';
  6.   datos.queryrol.Open;



Saludox ! :)
  • 0

#5 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 03:54

gracias por sus respuestas, segui el ejemplo que me dio fenareth pero me marca el siguiente error, para ver si me pueden orientar:

[DCC Error] Unit6.pas(267): E2010 Incompatible types: 'TsEdit' and 'Integer'
  • 0

#6 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 21 agosto 2013 - 03:58

Pon tu código aqui porfas amigo...

Saludox ! :)
  • 0

#7 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 04:08

pues primero puse tu codigo asi tal cual como me lo pasaste y me marco lo que puse anteriormente y tambien lo intente de esta manera y nada:



delphi
  1. datos.queryrol.Close;
  2.   datos.queryrol.SQL.Text := 'SELECT * FROM roles WHERE jornada ='+(jornada.text)+' and torneo = '+(torneo.text)+' ORDER BY folio ASC';
  3.   datos.queryrol.Open;


  • 0

#8 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 04:17

en encontrado un detalle en los campos que son int no hay problema para hacer la consulta, cuando son varchar es cuando me esta dando problemas, que puedo hacer para solucionar esto
  • 0

#9 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 21 agosto 2013 - 04:28

Yo tuve un error, a ver intenta de ésta manera:

  iVarjornada := StrToIntDef(jornada.Text, 0);  // variable de tipo entero
  iVartorneo := StrToIntDef(torneo.Text, 0);  // variable de tipo entero

  datos.queryrol.Close;
  datos.queryrol.SQL.Text := 'SELECT * FROM roles WHERE jornada = '+IntToStr(iVarjornada)+' and torneo = '+IntToStr(iVartorneo)+' ORDER BY folio ASC';
  datos.queryrol.Open;


Cambié el nombre de las variables para que no tenga problema con el nombre del componente

Saludox ! :)

  • 0

#10 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 21 agosto 2013 - 04:30

Ahhhhhh, uno de tus campos es varchar ???

Entonces tienes que "entrecomillarlo" (esa palabra existe ?  ^o|), cuál de tus campos es Varchar ???

Saludox ! :)
  • 0

#11 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 04:34

torneo es varchar, jornada es el que es int no se si mepuedas decir como es eso de entrecomillarlo

  • 0

#12 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 04:48

cuando es varchar se maneja diferente??? me acabo de dar cuenta que habia utilizado antes puro int
  • 0

#13 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 21 agosto 2013 - 05:06

Ok amigo, quedaría así...

  iVarjornada := StrToIntDef(jornada.Text, 0);  // variable de tipo entero
  sVartorneo := QuotedStr(torneo.Text);  // variable de tipo string

  datos.queryrol.Close;
  datos.queryrol.SQL.Text := 'SELECT * FROM roles WHERE jornada = '+IntToStr(iVarjornada)+' and torneo = '+sVarTorneo+' ORDER BY folio ASC';
  datos.queryrol.OPEN;


Si te fijas amigo, usé la funcion QuotedStr para el entrecomillado, que es el tratamiento que se le debe de hacer a los campos varchar (y)

Saludox ! :)


  • 0

#14 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 21 agosto 2013 - 05:21

ahi estaba el detalle, muchas gracias por la ayuda hoy e aprendido algo nuevo fenareth  (y)
  • 0




IP.Board spam blocked by CleanTalk.