| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Superprincipiante Invitado
|
Publicado: Dom 23 Ene, 2005 10:17 pm Asunto: Busqueda |
|
|
Antes de nada decir que estoy comenzando con C++ Builder y ahí va, una duda muy simple verán, tengo una tabla con 2 campos ún identificador numérico y un nombre, y el usuario me da un identificador en tiempo de ejecución por ejemplo un 3 y le tengo que mostrar el nombre que corresponde con el número 3, la consulta sql que hago es:
| Código: |
select nombre
from table1
where codigo=???????
|
¿Cómo le indico que el codigo sea igual al que tengo almacenado en una variable en tiempo de ejecución?.
Gracias, por vuestra ayuda |
|
| Volver arriba |
|
 |
LordNemesis Master


Registrado: 31 Dic 2003Mensajes: 340Ubicación: México
|
Publicado: Lun 24 Ene, 2005 5:26 pm Asunto: |
|
|
En Builder hay algunos componentes para ejecutar Query's en SQL, suponiendo que utilizas los BDE, utiliza el componente TQuery, y haces lo siguiente:
| Código: |
AnsiString q = "select nombre from table1 where codigo=???????"
Query1->SQL->Add(q);
Query1->Open(); //Usa Open si el query te devuelte una tabla como los selects
Query1->ExecSQL();//Usa ExecSQL() si la consulta solo ejecuta una accion, ejemplo: Insert, update, delete
|
Recuerda que la consulta SQL, es AnsiString por lo quer tyodo lo tienes que convertir a ese tipo de dato, y ahh y si a la cadena le vas a mandar datos de tipo char, debes mandarlo apostrofado...
saludos _________________ Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!! |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 24 Ene, 2005 9:26 pm Asunto: |
|
|
Open y ExecSQL son excluyentes _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 24 Ene, 2005 9:29 pm Asunto: |
|
|
| Código: |
AnsiString q = "select nombre from table1 where codigo='"+txtTuCampo->Text+"'";
Query1->SQL->Add(q);
Query1->Open();
|
_________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Superprincipiante Invitado
|
Publicado: Mar 25 Ene, 2005 10:24 am Asunto: |
|
|
Muchas gracias por vuestras respuestas, pero imaginaos que el campo lo obtengo de una variable en tiempo de ejecución, es decir un entero, "i", que en una función toma un determinado valor, como meto ese entero "i" dentro del where ¿sería poner:
¿where codigo = i?
en la clausula where de la consulta sql?
Gracias |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mar 25 Ene, 2005 12:20 pm Asunto: |
|
|
Lo que pasas es una "cadena" para que interprete el manejador de la base de datos , es decir tu entero lo conviertes en string para que pueda ser "adicionado" a la "peticion" que envias por medio del objeto TQuery
| Código: |
AnsiString q = "select nombre from table1 where codigo="+IntToStr(iTuEntero));
Query1->SQL->Add(q);
Query1->Open();
|
** Ojo como es un valor numerico no le "mando" las comillas como en la respuesta anterior
La otra forma es usando un objeto TTable y el metodo de busqueda , donde indicas el campo indice (algo parecido al seek de xBase), en lo particular me he dado cuenta qeu no funciona muy bien que digamos, asi que uso solo querys
Suerte _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
|