|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
J'utilise l'Embedded, j'ai interfacé la DLL ( j'utilise GCC sur windows donc pas de .a pour ma pomme ). J'utilise aussi wxwidget.
La création de la BD fonctionne mais je but à la création d'une table. Avant de la créer je vérifie si la table n'existe pas. Du moins c'est ce que j'espère réussir à faire faire. L'erreur qu'il me sort : Invalid token -104 cela se produit exactement lors de l'appel de isc_dsql_execute_immediate D'ailleurs la requête peut être simplement wxT(" CREATE TABLE " ) + aNameDoubleCote, il en ressort la même erreur. Code :
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
||
|
|
00
|
|
|
#2 | |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
En regardant un peu mieux la documentation, l'option dialecte est sur les exemples à un. Mais si j'ai bien compris 1 correspond à interbase, 2 la migration entre interbase et firebird et 3 purement firebird. Donc j'ai essayé avec 3. Mais ça n'arrange rien.
J'ai essayé avec un create table avec le nom de la table en minuscule, en majuscule, sans double cotes etc etc. Toujours la même erreur. Si cela peut aider, voici la documentation de isc_dsql_execute_immediate. Citation:
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Inscription : mars 2002 Messages : 711 ![]() |
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Merci je connais.
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
un create table sans définition de colonne ????
il faut définir au moins une colonne
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Bien vue :p Mici Ça fonctionne sauf pour la partie avec le IF NOT EXISTS. Mon petit doigt me dit que isc_dsql_execute_immediate étant prévu pour les requêtes sans résultat il doit pas aimer la partie avec le SELECT. Je vais tester avec un simple isc_dsql_execute.
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
J'obtiens la même erreur en passant avec un isc_dsql_execute.
soit je fais quelque chose de travers avec les fonctions de l'API soit ma requête est bidon. (j'opte pour la requête
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
Code :
"IF NOT EXISTS ( SELECT name FROM sysobjects WHERE type='U' AND name = "
il n'existe pas de table sysobjects
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Je vais chercher ce qu'il faut mettre à la place de sysobjects. Merci makowski. EDIT : Je stocke les liens ici : http://www.delphinaute.com/forum7/discussion68196/ DocFirbird->InterBase 6.0 Manuals->Language Reference-> System tables page 242 du pDF EDIT: Tien ça m'apprendra à m'endormir lors de la lecture de la fac J'avais loupé ça PROCEDURE STOCKE
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Code :
SELECT DISTINCT RDB$GENERATOR_NAME FROM RDB$GENERATORS RG WHERE RG.RDB$GENERATOR_NAME = "aNameTable" Ça c'est ma théorie, la pratique c'est qu'il me dit cette colonne n'existe pas dans cette table. Citation:
Citation:
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
||
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Langref :
Citation:
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#12 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
je pensais que c'était seulement les tables qui ont une relation qui se retrouvaient là dedans.
Je continu à déboguer, il devrait trouver la colonne RDB$RELATION_NAME mais c'est pas le cas. Je dois avoir un soucis dans mes fonctions. Je suis désolé d'être pas très doué, je dis ça car http://interbase.developpez.com/faq/...etes#REQ_FIRST c'était écris là. Mais cela change rien au soucis ma requête il me ressort toujours l'erreur que la colonne n'existe pas.
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#13 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Si je met la requête de la fac pour lister les tables existantes ça fonctionne
, mais dès que je rajoute dans le where Code :
AND RDB$RELATION_NAME = "LeNomDeMaTable" ( au passage je dois vraiment être une merde, mais en suivant rigoureusement la doc , j'arrive même pas à créer une base de donnée avec ISO8859_1, alors soit la doc d'interbase est complément plus valable pour firebird, ou soit *autocensure après reflexion* )
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#14 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Question stupide... Juste au cas où, aucun rapport avec le fait que je sois sous Vista ( 64bits )?
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
aucun rapport avec Vista, juste toi qui lis mal ou écrit mal
tu as tout ce qu'il faut pour bien faire
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Yep ça doit être un truc tout con que j'ai mal fait ou pas fait. Je vais chercher et trouver.
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#17 | ||||
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Extrait de Ibase.h :
Code :
en mettant leur façon de procéder et de l'utiliser est imbuvable parfaitement horrible : Code :
Autre exemple : pour récupérer une requête il faut envoyer un XSQLDA bateau, récupérer le nombre de XSQLVAR , puis préparer un autre XSQLDA à la bonne taille pour la remplir à nouveau. Leurs fonctions ne sont pas foutu d'allouer une structure adaptée à la taille du résultat de la requête. Enfin voila je suis pas nul, je suis capable de bosser dans un projet de 200k lignes pourries et comprendre comment ça fonctionne. Là ça fait une semaine que j'essaie de créer une table en vérifiant si elle existe pas déjà à l'aide d'une requête. C'est un concept simple pourtant. Là je viens de me décider à prendre la requête de la faq, même si je la comprend pas il est dit qu'elle renvoi les noms des tables contenu dans la bd, j'ai donc décidé de traité le résultat dans un boucle. Le sqlda est alloué puis envoyer à isc_dsql_describe pour le remplir, mais en sorti j'ai un sqlda complètement pourri. Je vais prendre une pause, peut être réessayer car je déteste abandonner pour une raison d'incompréhension. Mais franchement quand je vois linq de windows et cette chose de burland... enfin maintenant je vais sauvegarder toutes mes données dans un fichier xml et les requêtes je les substituerais avec mon framework.
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
||||
|
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
1/ si tu veux causer de l'API, c'est dans la liste architect
2/ ibpp est là pour t'aider et te simplifier le boulot 3/ ton problème n'est pas l'API mais ta requete si tu veux savoir si la table ou vue TOTO existe tu fais : Code :
SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$RELATION_NAME='TOTO' Code :
SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME='TOTO'
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#19 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 159 ![]() |
Merci beaucoup makowski. J'arrête pour un moment Firebird, je dois avancé, je suis parti sur du XML pour sauvegarder mes données. Quand viendra l'heure de gérer par des requêtes un grand volume de donnée, je retenterais Firebird, surement avec ibpp.
Merci encore pour ton aide.
__________________
"Le pointeur Malkavien..ouiiiiii...c'est moiiiii" |
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
C'est vrai qu'utiliser l'API, alors qu'il existe des moyens plus simple d'accèder à firebird, c'est un peu réinventer la roue...
De plus je vous conseille d'éviter de cumuler les difficultées. Vous ne connaissez pas ou mal le SQL et l'API de firebird. Afronter tout d'un coup quand ca ne fonctionne pas n'est pas évident Commencez par installer un outil d'administration de firebird et testez vos requetes avec. Celà vous évitera déjà de chercher si l'erreur vient de votre programme ou du SQL. Bon courrage |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com