Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Consultas dinámicas

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Consultas dinámicas Responder citando

Hola a todos,


Tengo esta consulta que se crea en tiempo de ejecución en el programa:

consulta->Active=False;
consulta->SQL->Clear();
consulta->SQL->Add("SELECT *");
consulta->SQL->Add("FROM tabla");
consulta->SQL->Add("WHERE nombre=");
consulta->SQL->Add(tabla2->FieldByName("NOMBRE")->AsString);
consulta->Active=True;

Esta consulta me da un error cuando se abre, pero no acabo de dar con el.

C++Builder 3
Un saludo y gracias.

Volver arriba
Mensaje    Asunto: Consultas dinámicas Responder citando

Me parece que el fallo lo tienes en la ultima linea y es que al ser un campo alfanumerico a lo que se iguala la condicion hay que ponerlo entre comillas.

nombre = "pepe",

Espero que te sirva. Un Saludo.

Volver arriba
Mensaje    Asunto: Consultas dinámicas Responder citando

Ante todo muchas gracias por tu ayuda, pero....

Esta consulta funciona, porque le pongo directamente el valor a mano.

consulta->Active=False;
consulta->SQL->Clear();
consulta->SQL->Add("SELECT *");
consulta->SQL->Add("FROM tabla");
consulta->SQL->Add("WHERE nombre='José Luis'");
consulta->Active=True;

pero, ¿cómo le paso un valor cada vez distinto?.
sprintf (valor, "%s", tabla2->FieldByName("NOMBRE")->AsString);
He probado en pasarle en vez de José Luis, valor, pero nada

Volver arriba
Mensaje    Asunto: Consultas dinámicas Responder citando

Hola, tienes una forma mas sencilla de pasar parametos:

  consulta->Active = false;
  consulta->SQL->Clear();
  consulta->SQL->Add("SELECT *");
  consulta->SQL->Add("FROM tabla");
  consulta->SQL->Add("WHERE nombre = :Nombre");
  consulta->Params->ParamByName("Nombre")->AsString = "Prueba";
  consulta->Active = true;

los parametros deben comenzar por ':' y esa "variable" es reemplazada por el valor que le des usando 'ParamByName'.

Volver arriba
Mensaje    Asunto: Consultas dinámicas Responder citando

una cosa, si al pasarle el valor directamente pones " 'pepe'", porqué no pones
consulta->SQL->Add("'"+tabla2->FieldByName("NOMBRE")->AsString+ "'");

Volver arriba
Mensaje    Asunto: Consultas dinámicas Responder citando

Gracias por vuestra ayuda.

He probado todas las opciones, pero por alguna razón que desconozco no aparecen los datos que tienen que aparecer.

Seguiré mirando a ver si encuentro alguna solución. De todas formas seguiré mirando vuestras contestaciones.

Un saludo y gracias por vuestra ayuda

Volver arriba
Mensaje    Asunto: Consultas dinámicas Responder citando

Prueba a buscar el nombre con
WHERE NOMBRE LIKE '%PEPE%'
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.