Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 19
Ivan_25 Va por buen camino
Consulta con and o or

Hola a tod@s de nuevo!!. Mi pregunta es: ¿Como puedo hacer para que al realizar una consulta el usuario pueda elegir si utilizar and o or para buscar por dos campos distintos?. Tengo una conexion a base de datos con ADO utilizando builder c++. Gracias a tod@s.
Responder Con Cita
  #2  
Antiguo 04-11-2005
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
Podrías usar un RadioGroup con dos opciones:
Si el usuario elije la primera hacés la consulta por AND
Si el usuario elije la segunda hacés la consulta por OR
Y listo
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita
  #3  
Antiguo 04-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 19
Ivan_25 Va por buen camino
Gracias Zeta

Gracias por la respuesta. Tengo otro problemilla, a ver si sabes resolverlo.
Tengo dos campos de busqueda que son codigos, y los guardo en la base de datos como Texto. El tema es que al hacer la busqueda por los dos campos con un between me falla porque between requiere enteros. ¿Puedo solucionar esto sin tocar la base de datos?.

Un saludo y gracias.
Responder Con Cita
  #4  
Antiguo 04-11-2005
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
primero nos vendría muy biensaber en k base de datos estas trabajando

De todas formas podrías probar si no te funciona un between, con >= y <=

Ejemplo:

a between 'a' and 'z' <--------> a >= 'a' and a <= 'z'

Intentalo y nos comentas
Responder Con Cita
  #5  
Antiguo 07-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 19
Ivan_25 Va por buen camino
Ya funciona

El problema eran los espacios entre el operador AND y los valores de busqueda. Quedaría asi:

cod1 = ECod1->Text.Trim();
cod2 = ECod2->Text.Trim();
cadena = "Select * from candidatos where id between ";
cadena = cadena + cod1;
cadena = cadena + " AND ";
cadena = cadena + cod2;
ADOQConsulta->SQL->Clear();
ADOQConsulta->SQL->Add(cadena);
FPrincipal->DSListacandidatos->DataSet = ADOQConsulta;
ADOQConsulta->ExecSQL();
FPrincipal->DSListacandidatos->DataSet = ADOQConsulta;
FPrincipal->ADOQListacandidatos->Active = true;
FPrincipal->DSListacandidatos->DataSet = ADOQConsulta;
Responder Con Cita
  #6  
Antiguo 07-11-2005
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
buenas perrako!!

Una consulta con parametros:

Cita:
Consulta->SQL->Clear();
Consulta->SQL->Add("SELECT campo FROM tabla WHERE campo1=:a AND campo2=:b;");
Consulta->Params->Items[0]->AsString = "condicion campo1";
Consulta->Params->Items[1]->AsString = "condicion campo2";
Consulta->ExecSQL();
Consulta->Active=true;
Si pruebas la consulta en access, te apareceran 2 ventanillas pidiendote 2 datos..."a" y "b"...y segun lo que pongas ahi...pues te hara la consulta con unos datos u otros. En mi opinion asi es bastante mas facil que intercalar dentro de la consulta los componentes, pero ya tu mismo...

Ademas los parametros pueden ser enteros para hacer comparaciones:

Cita:
....
Consulta->Params->Items[0]->AsInteger = 123;
Consulta->Params->Items[1]->AsInteger = Edit1->Text.ToInt();
...
Un saludo

Antonio
__________________
Un saludo

Antonio
Responder Con Cita
  #7  
Antiguo 07-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 19
Ivan_25 Va por buen camino
Macho

Es que asi como tu dices no me funciona. Lo he probado, pero primero, Items no puede ser un vector, y segundo no tiene la propiedad AsString, o por lo menos a mi no me tira asi. Gracias de todos modos.
Responder Con Cita
  #8  
Antiguo 07-11-2005
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
Pon en la ayuda tquery...y busca la propiedad "params"...alli puedes ver un ejemplo de uso: (yo uso bc++ 5 pero en la 6 tambien tendria que estar).


Cita:
The following code runs an insert query to add a record for Liechtenstein into the country table.
Query2->SQL->Clear();
Query2->SQL->Add("INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION) ");
Query2->SQL->Add("VALUES (:Name, :Capital, :Population) ");
Query2->Params->Items[0]->AsString = "Liechtenstein";
Query2->Params->Items[1]->AsString = "Vaduz";
Query2->Params->Items[2]->AsInteger = 420000;
Query2->ExecSQL();
Un saludo

Antonio
__________________
Un saludo

Antonio
Responder Con Cita
  #9  
Antiguo 07-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 19
Ivan_25 Va por buen camino
Antoñico

A ver, como le puedo pasar una cadena a otro formulario?Te explico. Tengo un formulario de busqueda, y para hacer la sentencia sql quiero que el usuario pueda elegir AND u OR, de manera que hago llamadas a una funcion andor que me abre un formulario nuevo donde quiero mostrar la cadena que llevo hasta ese momento, y tengo 2 botones and u or. Como paso la cadena del formulario 1 al formulario andor?. Me entiendes. Enga neeeeeeeeeeeeeen!!!!!.
Responder Con Cita
  #10  
Antiguo 07-11-2005
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
Pues varias maneras...


Al principio del formulario DESTINO...tienes que poner un include al formulario ORIGEN...algo asi:

Cita:
#include "uORIGEN.h"
De esta manera, ya puedes acceder a todas sus variables y componentes de la siguiente manera:

Nombre_Formulario->LOQUEQUIERAS (o un componente o una variable o como quieras)

Entonces si la cadena esa la tienes en un edit, pos:

Formulario->Edit1->Text

Si esta en una cadena, la cadena la tendras que declarar GLOBAL en el .h del formulario ORIGEN, y entonces desde el DESTINO:

Formulario->cadena
__________________
Un saludo

Antonio
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 15:01:09.


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