Ver Mensaje Individual
  #2  
Antiguo 15-01-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Reputación: 22
Bicho Va por buen camino
Hola, antetodo bienvenido al ClubDelphi.

Por favor, leete la Guía de Estilo y entenderás que no debes repetir los hilos (no ayuda en nada, sólo conseguirás que se te recrimine por parte de un moderador y te cierren el hilo), poner títulos descriptivos y no usar palabras como "urgente" porque no ayudan en posteriores búsquedas si alguien más tiene el mismo problema que tú.
No hacer distintas preguntas en el mismo hilo por la misma razón que antes. Y usar las etiquetas para envolver el código para mejorar la legibilidad.

A bote pronto, referente a tu problema, es que, tras rellenar la propiedad Add (o text) del AdoQuery, llamas al método ExecSQL y luego al Open. Es un error muy frecuente, por lo que veo.
ExecSQL, sólo debes usarlo cuando la Query que vayas a ejecutar no sea una Select, es decir, cualquier otra: Insert, Delete, Update, Drop, Create, etc.
Además nunca usas en combinación con Open o Active := True, porque puede que te de problemas.
En cambio el metodo Open o la propiedad Active := True (son equivalentes los dos, pero sólo debes usar uno a la vez), son los que activan la query en caso que esta sea una consulta (SELECT).

No se si esto, te soluciona el problema, pero con el código que nos has dado es lo único que veo, a simple vista.

Tú segundo problema puedes probar con la siguiente select, substituyendo los nombres con los de tus tablas.

Código SQL [-]
 select materia.nombre
   from datos_libro, materia
 where materia.id = datos_libro.id
 //así conectas las dos tablas por el id y consigues el nombre. Esta selec la debes poner en la Query que conectes al DataSource que está conectado a su vez con el DBGrid, así te mostrará el nombre de la materia.

Espero te sirva.

Saludos
Responder Con Cita