Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   probe con varias y no anda!!! (https://www.clubdelphi.com/foros/showthread.php?t=38074)

todook 01-12-2006 16:16:49

probe con varias y no anda!!!
 
bueno el tema es que tengo dos tablas hechas en paradox para pais y provincias conectadas por id_pais..ya hice el abm de las dos con tquery tdataset que salen a dbgrid. bueno mi problema es que puse un boton para que cuando lo apriete me tire para los paises sus respectivas provincias noo? digamos lo logico :D !! bueno estuve probando hacerlo con inner con left con right, directamente igualarlos pero poniendo table1.id = table2.id bla..bla la cosqa es que no sale!!!! siempre me tira el maldito type mismatach in expression!!!!:mad: :mad: bueno el codgo al final quedo asi:

procedure TForm1.Button1Click(Sender: TObject);
begin
qryprov.SQL.Clear;
qryprov.SQL.Add('SELECT PAIS.NOMBRE_PAIS, PROVINCIA.NOMBRE_PROVINCIA, PROVINCIA.ID_PAIS FROM PAIS INNER JOIN PROVINCIA ON PAIS.ID_PAIS = PROVINCIA.ID_PAIS');
qryprov.ExecSQL;
qryprov.Active:=true;
end;
end.

AYUDA ANTES DE QUE PATEE LA MAQUINA !!

SALUDOS...Y GRACIAS!!!

Bicho 01-12-2006 16:25:19

Bueno tranquilidad antetodo, la máquina no tiene ninguna culpa :D

Prueba a quitar la intrucción ExecSQL. Verás como funciona.
Si estás ejecutando una sentencia SQL de consulta, debes abrirla con un Query.open o un query.Active := True.
Cuando hagas una sentencia SQL que implique alteración de datos (insert, delete, update, create, drop, etc) debes usar un ExecSQL en lugar del Open o el active.

Espero te sirva,

Saludos

todook 01-12-2006 16:29:23

jajajaj ok es un buen dato el que me das..yo usaba ese porque fue lo primero que encontre para que funcione..con razon tenia tantos problemas con el open el activate, buenisimo la proxima leo algo antes de empezar a programar no? jajaja.....bueno muchas gracias por la ayuda!! saludos!!

todook 01-12-2006 16:35:18

Igual Onda Que Sigue Sin Andar Pero Buee Sigo Probando Jajaja

Lepe 01-12-2006 18:21:53

Pues está "todo OK" jejeje.

Si no funciona es que no tienes datos o que en PROVINCIA.ID_PAIS no tiene correspondencia en la tabla PAIS, o al revés. Añade valores a los registros, incluso con el Database Desktop.

Saludos

Bicho 01-12-2006 18:28:00

Pues tiene toda la pinta de ser lo que te ha comentado el amigo Lepe :D
Comprueba con un cliente de base de datos copiando la misma consulta y ejecutándola, para saber que realmente no hay datos.
Puede saber el contenido de la sentencia con el comando Query.SQl.Text, justo antes de hacer el Open, escribes su contenido en un memo para poder copiarlo y lo pegas en el cliente de tu base de datos.

Saludos

todook 01-12-2006 19:48:42

mira las dos tablas tienen registros, las dos estan con un ID_pais, tienen registros las dos tablas...y algunos que coinciden el id.
pero aparte me sigue poniedo el type mismatch..
mande un qryprov.sql.text a un edit
antes del active...y esta bien le manda bien la query..
no tiene nada que ver que un campo sea autonumerico no?

Lepe 01-12-2006 21:09:23

Normalmente en Pais si tendrá un autonumérico por clave primaria, pero después en provincia.id_pais, tú eres el responsable de ponerle el mismo número.

La tabla provincias puede tener de clave primaria el campo PROVINCIAS.ID y ser autonumérico, por eso no debe haber problemas.

Seguro que es uno de esos errores tontos que nos hacen perder mucho tiempo, pero ahora mismo no tengo ni idea. Todo lo dicho está bien.

Saludos

todook 01-12-2006 21:35:55

una tabla esta conectada con un datasource y un tquery y la otra con otro podra ser por eeso???

Lepe 02-12-2006 13:38:56

Lo que necesitas es:
- Un Tquery (qryprov) que en su propiedad DatabaseName apunte a tu Base de datos.
- Un Tdatasource que en su propiedad Dataset, apunte al query anterior
- Un TDBGrid enlazado a ese TDataSource (para ver los resultados).
- El botón con el código de tu primer mensaje (quitando el qryprov.ExecSql).

Con eso, al hacer clic en el boton, debes ver en el grid todos los paises con sus provincias.

Saludos y buena suerte.

todook 04-12-2006 17:00:22

bueno gente...despues de un fin de semana me relaje y me puse aver esto que me habia cansado..bue descubri que el error lo tiraba por que el el id de paises era autoincrementar, puede sonar ilogico pero era por eso..agregue otro id a la tabla y los puse de tipo alpha y lo compara perfecto...el tema es que no me sirve asi pero bueno ahora que esta la solucion buscare la vuelta..

Saludos

todook 04-12-2006 17:11:46

ahh perdonn me olvidaba muchas gracias a todos por la ayuda!!!! una maza!!


La franja horaria es GMT +2. Ahora son las 07:50:20.

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