hé mec fait un ctrl+f "ROWID" sur cette page : http://doc.pcsoft.fr/fr-FR/?1000019635
SQL : le véritable Esperanto
"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !
Si j'utilise l'alias => idem.
J'ai oublié, si:
Par contre, sdRes est vide...bres = SQLExec("SELECT rowid FROM Products",sdRes)
Aucune erreur ; bRes vaut Vrai.
A noter: maintenant, même une table avec une rubrique ID renvoie la même erreur !
Alors qu'avec HExécuteRequête(), au moins ça, ça marchait...
tu as vu le lien que j'ai cité juste au dessus ? y a la réponse....
SQL : le véritable Esperanto
"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !
Ooops ! J'avais loupé ton message.
Il est dit dans cette page que:
Alors pourquoi ne puis-je y accéder ?L'Accès Natif SQLite importe donc systématiquement la colonne "ROWID" afin de privilégier son utilisation pour optimiser les performances.
D'après ce qui est écrit, il faudrait forcer le type de cette rubrique dans l'analyse à Texte, c'est bien cela ?
Je sais pas trop j'avoue mais moi je testerais avec les "magic alias" :
donc _rowid_ et oid... ouais "la réponse" j'y suis allé fort... disons des pistes !Bien que cette rubrique soit "cachée" par défaut par le moteur SQLite, il est toujours possible d'y accéder en utilisant un des noms spéciaux suivants :
"ROWID",
"_ROWID_",
"OID".
SQL : le véritable Esperanto
"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !
J'avoue que j'en ai un peu marre de me prendre la tête ; je contourne le problème en évitant, comme dit précédemment les rubriques ROWID et ID de toutes les tables:
De toutes façons, dans la bdd de destination (HF), ID et ROWID seront renseignés automatiquement (identifiant auto).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 POUR TOUTE CHAÎNE sRub DE sListeRubriques SEPAREE PAR RC SI PAS sRub = "ROWID" ALORS SI PAS sRub = "ID" ALORS sNomRequete = "sdGetString." + sRub sRequeteCible += {sNomRequete} + "','" FIN FIN FIN
Ça marche impec.
Merci beaucoup pour toute ton aide.
et les clés étrangères ?
et de rien... !
SQL : le véritable Esperanto
"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !
Dans la bdd source, il n'y a aucune relation entre les tables (donc pas de notion de clé étrangère) ; les relations, je les crée dans la base HF de destination et utiliseront les id auto définit par celle-ci (je pense, non ?)
Ouais pour le futur pas de pb mais c'est pour la reprise de l'existant que ça chie... disons même s'il n'y a pas de contrainte d'intégrité dans le SGBD des clés étrangères peuvent exister... surtout s'il s'agit d'un modèle relationnel...
Après sur ce point là seul toi connait la réponse
SQL : le véritable Esperanto
"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !
Oui, mais je connais le fonctionnement de la bdd source et le pourquoi d'une telle structure ; je ne pense pas avoir de problèmes... Sinon, à bientôt sur ce forum et encore merci.
Bonjour
jacquesprogram, je reviens sur ce message car sdRes ne peut pas être alimenté
Regarde bien l'aide de SQLExec, ça n'alimente pas une source de donnée
Tu dois Faire :A noter pour SQLite que si tu as défini une colonne de type INTEGER PRIMARY KEY, cette colonne devient un alias du ROWID (source)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SI SqlExec("select rowid from tatable", "req1") ALORS SI SQLAvance("req1") = 0 ALORS // "req1" ou un nom quelconque servant à manipuler le résultat Info(SQLLitCol("req1", 1)) ...
Donc si tu fais un SELECT ROWID ça affichera cette colonne à la place
Par contre si pas de colonne de ce type la colonne nommée ROWID sera visible
Test rapide :
Ensuite tu fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CREATE TABLE table1( IdTable1 integer PRIMARY KEY , Lib1 varchar(50)); CREATE TABLE table2( IdTable2 integer , Lib2 varchar(50));ça retourne la colonne IdTable1
Code : Sélectionner tout - Visualiser dans une fenêtre à part select rowid from table1
puis unça retourne la colonne rowid
Code : Sélectionner tout - Visualiser dans une fenêtre à part select rowid from table2
Pascal H.
phapps.e-monsite.com
Pour sdRes vide, ok, je m'en suis aperçu après.
A noter que ce n'est pas moi qui ai créé la bdd sqlite, mais je viens de remarquer quelque chose :
Lors du parcours des différentes tables (avec SQLite Browser), les rubriques ROWID apparaissent bien ; par contre quand je fais un export de la structure de la bdd en script sql, il n'apparait aucun ROWID pour les tables qui en affichaient pourtant un. La primary key pour ces tables est définie sur la 2e rubrique, par ex, Type (qui est donc en fait la 1ère rubrique) => voilà pourquoi l'erreur sous Windev (cependant, quand je liste toutes les colonnes de la table sous Windev, ROWID apparaît bien !?)
Sinon, pour les tables contenant un ID, le script SQL indique:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE Produits ('ID' integer primary key autoincrement , etc.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager