Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2005
Avatar de jas010
jas010 jas010 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Bolivia
Posts: 51
Poder: 20
jas010 Va por buen camino
Question como poner 4 condiciones para bdgrid

un saludo a todos los foristas y mis agradecimientos por las ayudas que me han dado desde un principio.
tengo una duda y es la siguiente:
estoy trabajando con una base de datos que es access
tengo hechas las conexiones respectivas ya hechas y
tengo que poner 4 condiciones para sacar datos de mi dbgrid(contiene todos los datos de la tabla de la db)
ya que todos los datos son similares solo que se hacen distintos haciendo 4 comparaciones que son las siguientes
#aula
h_entrada
h_salida
fecha
si estas 4condiciones se cumple que me muestre en un messagedlg o en un showmessage con los datos encontrados.
las comparaciones se van a hacer desde 2 edit y 2combobox
a los datos que se tiene almacenado en la base de datos

espero su ayuda y comprension ya que este problema se me ha vuelto existencial y muchas gracias una ves mas
Responder Con Cita
  #2  
Antiguo 11-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
[quote=jas010]
tengo que poner 4 condiciones para sacar datos de mi dbgrid
[quote=jas010]
Sería poner restricciones en el WHERE de una consulta no?? O basar una nueva consulta, en la que tiene el dbGrid actualmente y añadir restricciones
Cita:
Empezado por jas010
si estas 4condiciones se cumple que me muestre en un messagedlg o en un showmessage con los datos encontrados.
No tienes por qué hacer el showMessage, simplemente construyes el SQL correspondiente y lo abres, si no tienes datos, el Grid estará vacio.

Si creo entender, tienes un Grid enlazado directamente a la tabla, 2 edits y dos combos. Habría que enlazar el grid actual a una consulta que se crea al pulsar un nuevo botón, según lo especificado en los 2 edits y 2 combos.

¿cual es el problema?

No sabes como construir el WHERE de la consulta ?

¿Cuales son los datos que van a tener esos 4 campos ?? h_entrada y h_salida serán horas, pero #aula es un numero?

Saludos
Responder Con Cita
  #3  
Antiguo 14-03-2005
Avatar de jas010
jas010 jas010 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Bolivia
Posts: 51
Poder: 20
jas010 Va por buen camino
Exclamation

gracias lepe por responder......

paso a explicarte todo lo que me paso.
inicialmente tuve problemas como mi consulta mi problema que no podia ejecutarse la consulta que es la siguiente:
Cita:
adoquery1.SQL.text:='SELECT cod_aul
FROM presto_
WHERE cod_aul='+quotedStr(aula_mod.Text)'and hora_entrada='+quotedstr(strtoint(mod_hora1.Text))'and mod_dia1='+(inttostr(mod_dia1.date));
estas son mis 4 condiciones :

aula_dia =>edit =>text
fecha =>datapicker =>date
h_entrada =>combobox =>text
h_salida =>combobox =>text
esta fue mi consulta que nunca pude ejecutar y es por eso que intente hacer sacando todos los valores que tiene mi tabla al bdgrid y hacer un codigo que haga las busquedas con las 4 condiciones.
y si ejecuta el error que sale es:project sistema administrativo.exe raised exception class Eoleexception with message'el parametro aulas.aul_codigo no tiene ningun valor predeterminado' Process stoped. use step or run continue
y me es necesario sacar el showmessage que va a funcionar como alerta al usuario de si esta ocupado o no esta ocupado
y ahora que mencionas la consulta SQL voy a volver a intentar y espero tu ayuda
.-¿como activo mi adoquery? si no tengo ningun codigo en las propiedades SQL de mi adoquery

.-¿como hago para que el resultado de la consulta (solo si hay datos enci¡ontrados)me muestre en un showmessage ?
Responder Con Cita
  #4  
Antiguo 15-03-2005
lroblesco lroblesco is offline
Miembro
 
Registrado: ene 2005
Ubicación: Baja California Sur, Mexico
Posts: 77
Poder: 20
lroblesco Va por buen camino
otra respuesta

ok primero, los campos h_entrada y salida son del tipo time? y el campo fecha es un tipo Fecha? yo haria la consulta mas o menos asi
Código:
 adoquery.params.parambyname('h_entrada').value:=strtotime(combo.text);
 adoquery.params.parambyname('h_salida').value:=strtotime(combo2.text);
 adoquery.params.parambyname('fecha').value:=Datetimepicker.date;
 
 adoquery1.SQL.text:='SELECT cod_aul 
   FROM presto_ 
   WHERE cod_aul='+quotedStr(aula_mod.Text)'and hora_entrada=:h_entrada
 and mod_dia1=:fecha);
 adoquery.open;
tu le agregarias todas las demas condiciones, el error que dices que pone creo que es cuando no escribes bien el nombre del campo, o no existe.
__________________
No siempre el mas veloz es el que gana la carrera
Responder Con Cita
  #5  
Antiguo 15-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Perdona por no explicarme con claridad, me referia a los tipos de datos en la base de datos.

¿el código de aula está declarado como string o como número en la base de datos?

Cita:
with message'el parametro aulas.aul_codigo no tiene ningun valor predeterminado'
El campo de la base de datos se llama aul_codigo o bien cod_aul

En el SQL viene de una forma y en el mensaje de error de otra, he de suponer que aul_codigo es el Titulo, pero el campo se llama cod_aul

Solventando estas pequeñas confusiones por mi parte, me inclino por la solución de lroblesco con un pequeño detalle:

La asignación de parámetros se realiza despues de insertar el Text en el Sql.
Tambien faltaba un signo más despues del (aula_mod.text)
Código Delphi [-]
 adoquery1.SQL.text:='SELECT cod_aul 
   FROM presto_ 
   WHERE cod_aul=' +quotedStr(aula_mod.Text)+
' and hora_entrada=:h_entrada and mod_dia1=:fecha');

 adoquery.params.parambyname('h_entrada').value:=strtotime(combo.text);
 adoquery.params.parambyname('h_salida').value:=strtotime(combo2.text);
 adoquery.params.parambyname('fecha').value:=Datetimepicker.date;

 adoquery.open;


Además, justo antes de abrir la consulta, puedes hacer un
ShowMessage(adoquery1.SQL.text)
para comprobar los errores de sintaxis, espacios que falten, parentesis, las
comillas simples, etc.

Para saber si ha encontrado resultados, despues de abrir la consulta, puedes hacer esta comprobación:
Código Delphi [-]
if adoquery.isEmpty then
  ShowMessage('No se ha encontrado resultados');
como ves yo hago lo contrario, si está vacia, muestro un mensaje al usuario.

Espero te ayude. Saludos
Responder Con Cita
  #6  
Antiguo 18-03-2005
Avatar de jas010
jas010 jas010 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Bolivia
Posts: 51
Poder: 20
jas010 Va por buen camino
Lightbulb

gracias LEPE por la aclaracion ya que fue de mucha ayuda para poder
ubicarme pensar en este codigo que tiene algo de relacion a lo que me pusiste
este codigo esta en un boton
Cita:
procedure Taulas.busca_diaClick(Sender: TObject);
var fecha_pres : string ;
begin
fecha_pres := datetostr(fecha_dia.datetime);
with ADOCommand1 do begin
CommandText := 'SELECT cod_aul, fecha_prest,nombre_presta,apellido_presta FROM presto_ WHERE cod_aul = :codigo_aula and ((hora_entrada > :hora_ent and hora_entrada < :hora_sal) or (hora_salida > :hora_ent and hora_salida < :hora_sal )) and fecha_prest = :fecha_prestamo ';
CommandType := cmdText;
Parameters.ParamByName('codigo_aula').Value := aula_dia.text;
Parameters.ParamByName('hora_ent').Value := dia_hora1.text;
Parameters.ParamByName('hora_sal').Value := dia_hora2.text;
Parameters.ParamByName('fecha_prestamo').DataType:=ftdatetime;
Parameters.ParamByName('fecha_prestamo').Value := fecha_dia.datetime
end;
ADODataSet1.Recordset := ADOCOMMAND1.Execute;
if ADODataset1.Recordset.RecordCount = 0 then
begin
showmessage((' El Aula ingresada esta siendo acupada por: ')+adodataset1.FieldByName('nombre_presta').Value); //aqui es donde recide mi problema porque cuando se ejecuta este error me dice "invalid variant type conversion" y no asi cuando lo anulo porque ya me salen el showmessage((' El Aula ingresada esta siendo acupada por: ') pero todas la aulas aunque no este en la base de datos almacenada
guardar.Enabled:=false;
end
else
begin
showmessage('No se a encontrado niguna reserva');
guardar.Enabled:=true;
end;
end;
como te habras de dado cuenta que persisto en sacar el showmessage ya que para esta aplicacion es indispensable y necesario y tiene que aparecer el nombre y apellido del que ha reservado y bueno

Gracia una vez mas y que tengan un buen dia

Última edición por jas010 fecha: 18-03-2005 a las 14:16:11.
Responder Con Cita
  #7  
Antiguo 18-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]
ADODataSet1.Recordset := ADOCOMMAND1.Execute;
if ADODataset1.Recordset.RecordCount = 0 then
begin
showmessage((' El Aula ingresada esta siendo acupada por:') 
+adodataset1.FieldByName('nombre_presta').Value);

Si la consulta no tiene registros, tienes que acceder al campo 'nombre_presta',

pero si hemos quedado en que la consulta no tiene registros!!! ¿como se
puede acceder al valor de ese campo?

A ver si diciendolo de otra forma:

La consulta es para ver si está prestada un aula en un determinado momento no??
- Si está prestada, Recordcount será > 0, debería ser 1 y entonces sacas el showmessage ya famoso

- Si no está prestada, Recordcount será = 0, y por tanto indica que el aula está disponible, no puedes poner el mensaje " El Aula ingresada esta siendo acupada por: ", porque realmente no está ocupada

Me he liado yo solo, o también te he liado a ti ?

un saludote
Responder Con Cita
  #8  
Antiguo 30-03-2005
Avatar de jas010
jas010 jas010 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Bolivia
Posts: 51
Poder: 20
jas010 Va por buen camino
Lightbulb

gracias lepe por tu ayuda y tambien mis agradecimientos a los del foro
Lepe ya se donde esta el problema.
te explico:
hice las pruebas en access con la misma consulta solo que en sql y no recibia ningun resultado entonces se me ocurrio ingresar los datos en el
where fecha_dia='01/07/2005'
que es mes/dia/fecha y los datos que ingresa es dia/mes fecha
osea que por mas que intente modificar la consulta no podria obtener resultado por ese problema.
- y ahora mi problema es el siguiente como hago que mi datapicker me envie mes/dia/año y que visualize dia/mes/año

esperando la respuesta o la sulicion me despido muy agradecido a este foro
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:53:47.


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