Page 1 sur 1
[R] Sqlite et combos
Posté : lun. 25 août 2014 16:08
par gregelec
Bonjour à tous
Je suis sur un projet de choix dans une base SQlite
Je doit alimenter des combos de choix en fonctions de requetes.
Le problème que je rencontre concerne l'utilisation des Arrays.
Si je rempli "a la main" un tableau "$Marques[15] "à une colonne j'arrive à l'utiliser sans problèmes pour alimenter la liste d'un combo
Par contre ce même tableau rempli avec une requête SQL de type _SQLite_GetTable2d à l'utilisation de l 'array me provoque une erreur
j'ai le même affichage avec la fonction _ArrayDisplay($Marques) quand il est rempli en manuel ou en sql
des que je veux visualiser une case du tableau voici l'erreur rencontrée
==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$txtcombo= $Marques[$icompte]
$txtcombo ^ ERROR
est-ce que le fait de remplir le tableau avec une requête change les dimensions du tableau ?
Je suis d'un naturel patient mais ça commence à m'énerver grave
Re: [...] Sqlite et combos
Posté : lun. 25 août 2014 18:03
par mikell
Même sur la requête d'une seule colonne, _SQLite_GetTable2d retourne un tableau
2D avec les noms de colonne en 1ère ligne
Exemple
► Afficher le texte
Code : Tout sélectionner
#include <MsgBoxConstants.au3>
#include <SQLite.au3>
;#include <SQLite.dll.au3>
#Include <Array.au3>
#include <GUIConstantsEx.au3>
Local $aResult, $iRows, $iColumns, $iRval
_SQLite_Startup()
_SQLite_Open()
_SQLite_Exec(-1, "CREATE TEMP TABLE persons (Name, Age);")
_SQLite_Exec(-1, "INSERT INTO persons VALUES ('Alice','43');")
_SQLite_Exec(-1, "INSERT INTO persons VALUES ('Bob','28');")
_SQLite_Exec(-1, "INSERT INTO persons VALUES ('Cindy','21');")
$iRval = _SQLite_GetTable2d(-1, "SELECT Name FROM persons;", $aResult, $iRows, $iColumns)
_SQLite_Close()
_SQLite_Shutdown()
; Msgbox(0,"", "$aResult a " & UBound($aResult, 0) & " dimensions")
; _ArrayDisplay($aResult) ;<<<<<< piège
$content = ""
For $i=0 to UBound($aResult)-1
$content &= $aResult[$i][0] & "|"
Next
GUICreate("Example", 300, 200)
$Combo = GUICtrlCreateCombo("", 10, 10, 185, 20)
GUICtrlSetData($Combo, $content, $aResult[0][0])
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Combo
$sComboRead = GUICtrlRead($Combo)
MsgBox($MB_SYSTEMMODAL, "", $sComboRead)
EndSwitch
WEnd
Mais c'est vrai que _ArrayDisplay est piégeux sur ce coup-là. Je m'informe derechef

Re: [...] Sqlite et combos
Posté : lun. 25 août 2014 18:23
par gregelec
Je m'empresse de tester ton code et hop voici l'erreur qu'il me sort ....
>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\savxps05-2013\mesdocs\sqlite\TEST ARRAY.au3" /UserParams
+>18:18:25 Starting AutoIt3Wrapper v.2.2.0.2 SciTE v.3.4.1.0 Keyboard:0000040C OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:040C)
+> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\hop\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\hop\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.12.0) from:C:\Program Files (x86)\AutoIt3 input:D:\savxps05-2013\mesdocs\sqlite\TEST ARRAY.au3
+>18:18:25 AU3Check ended.rc:0
>Running:(3.3.12.0):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "D:\savxps05-2013\mesdocs\sqlite\TEST ARRAY.au3"
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
"D:\savxps05-2013\mesdocs\sqlite\TEST ARRAY.au3" (46) : ==> Subscript used on non-accessible variable.:
GUICtrlSetData($Combo, $content, $aResult[0][0])
GUICtrlSetData($Combo, $content, $aResult^ ERROR
->18:18:25 AutoIt3.exe ended.rc:1
+>18:18:25 AutoIt3Wrapper Finished.
>Exit code: 1 Time: 0.5689
Mais que se passe t il ???
[edit]
j'ai trouvé pour ton code , tu avais mis un ; devant #include <SQLite.dll.au3>
et la ton code fonctionne mais pas le mien
Re: [...] Sqlite et combos
Posté : lun. 25 août 2014 18:30
par mikell
Effectivement bizarre...
Essaie de tester le code avec GUICtrlSetData($Combo, $content, "Name")
J'attends des infos
Re: [...] Sqlite et combos
Posté : lun. 25 août 2014 18:37
par gregelec
J'ai l'impression que cela vient de l'installation des compléments sqlite , il y a t'il un tuto pour l'installation des compléments ?
Surtout que l'appli que je développe doit fonctionner sans internet et sur des machines 32 ou 64 bits ...
Re: [...] Sqlite et combos
Posté : lun. 25 août 2014 18:46
par mikell
Si tu mets la dll sqlite.dll dans le même dossier que le script, ya pas de problème pour du offline et tu peux commenter l'include <SQLite.dll.au3>
Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 10:20
par gregelec
Ahhh cela va mieux ,
maintenant le soucis que j'ai avec les combos c'est que quand je les remplis avec GUICtrlSetData($Combo1, $listeamoi,1)
j'ai la premiere ligne du combo qui est vide
il doit me manquer un truc ...
[Edit]
j'ai trouvé il suffit que la $listamoi ne commence pas par "|"
Pb compilation
Posté : mar. 26 août 2014 10:51
par gregelec
Voici le message quand je compile
que doit-je faire ?
Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 20:16
par Tlem
Ce message est souvent lié à l'AV.
Il faut aussi voir si vous utilisez la dernière version d'AutoIt car les chemins temporaires de compilation ont changés par rapport aux versions précédentes.
Envoyé depuis mon mobile en utilisant Tapatalk.
Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 22:06
par gregelec
En fait 2 problemes :
Avast qui m'embetait ...
et la ligne #pragma avec l'icone
Cay est c'est compilé
l'exe fonctionne sur mon poste mais pas pas sur une autre machine il manque sqlite.dll
Comment l'inclure dans l'exe ?
Si tu as une idée sinon je vais rechercher sur le forum ...
Il ne me manque plus que la gestion des couleurs de la GUI (barre de titre de la fenetre... et autres) mais ca c'est pour faire Zouli ...

Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 22:26
par mikell
gregelec a écrit :Comment l'inclure dans l'exe ?
Restons classique : FileInstall
Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 22:43
par Tlem
+1.
Sinon un 'zouli' installateur de type Innosetup qui copiera votre exe ainsi que la dll et tout ce dont vous aurez besoin ...
Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 22:47
par mikell
Thierry ça vaut vraiment la peine un installateur pour 1 seule dll ?
Re: [...] Sqlite et combos
Posté : mar. 26 août 2014 23:01
par Tlem
Innosetup est gratuit et surtout il est plus adapté pour créer un setup qui ne fera pas réagir l'AV local ...
Et puis :
- çà fait plus pro. ^^
- Si la dll change (ou autre) je n'ai pas besoin de recompiler le script.
et bien d'autres avantages. Mais tu connais déjà tout ça. C'est juste histoire de répéter pour les petits nouveaux.

Re: [...] Sqlite et combos
Posté : mer. 27 août 2014 08:53
par gregelec
Merci pour tous ces conseils , je vais y jeter un coup d’œil ...
Cela me fait drôle d’être traiter de petit nouveau ... j'ai utilisé AUTOIT en 2000 ...
Mais je ne pratique pas tous les jours ...
Et je ne suis pas informaticien développeur mais plutôt électronicien l'informatique est pour moi une boite à outils
et quand je ne trouve pas les outils qui me conviennent je les fabriques.
Autoit à formidablement évolué et j'ai découvert SQlite qui est bien pratique, j'ai pas fini de venir demander conseil
encore bravo !!!