toujours avec mon problème de bases de données, j'aimerais choisir un table dans une base multi tables, pour pouvoir la lister.
Code : Tout sélectionner
Procedure OuvrirUneBaseDeDonnees()
FichierParDefaut$ = "*.SQL"
Filtre$ = "SQlite (*.Sqlite)|*.SQL*"
Filtre = 0
FichierBdd = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
If FichierBdd
; Liste des tables
OpenDatabase(#Fichier_Bdd, FichierBdd, "", "", #PB_Database_SQLite)
SetGadgetText(#Str_BDD,FichierBdd)
ReqSQL = "Select * From sqlite_master order by type Desc, name Asc"
If DatabaseQuery(#Fichier_Bdd, ReqSQL)
Index = 0
While NextDatabaseRow(#Fichier_Bdd)
If GetDatabaseString(#Fichier_Bdd, 0) = "table"
Table = GetDatabaseString(#Fichier_Bdd, 1)
AddGadgetItem(#Cmb_Table, -1, Table)
Index + 1
EndIf
Wend
EndIf
SetGadgetText(#Cmb_Table, Table)
;lister la structure d'une table
Index = 0
Table = GetGadgetText(#Cmb_Table)
ReqSql = "Pragma table_info(" + Chr(34) + Table + Chr(34) + ")"
If DatabaseQuery(#Fichier_Bdd, ReqSql)
While NextDatabaseRow(#Fichier_Bdd)
AddElement(nom())
nom() = GetDatabaseString(#Fichier_Bdd, 1) ;nom
;sType.s = GetDatabaseString(#Fichier_Bdd, 2)
;Debug sType
;snonnul.s = GetDatabaseString(#Fichier_Bdd, 3)
;Debug snonnul
;sDefVal.s = GetDatabaseString(#Fichier_Bdd, 4)
;Debug sDefVal
;sCle_primaire.s = GetDatabaseString(#Fichier_Bdd, 5)
;Debug sCle_primaire
Index + 1
Wend
EndIf
;Créer l'en-tête de la ListIcon
Index = 0
ForEach nom()
AddGadgetColumn(#ListIcon, Index, nom(), 200)
Index + 1
Next
; lister les éléments d'un table et remplir la ListIcon
Global Donnee$ = ""
ReqSql = "Select * From " + table
If DatabaseQuery(#Fichier_Bdd, ReqSql)
While NextDatabaseRow(#Fichier_Bdd)
For Index = 0 To ListSize(nom()) - 1
AddElement(Donnee())
Donnee() = GetDatabaseString(#Fichier_Bdd, Index)
Donnee$ + Donnee() + Chr(10)
Next
AddGadgetItem(#ListIcon, -1, Donnee$ + Chr(10))
Donnee$ = ""
Wend
FinishDatabaseQuery(#Fichier_Bdd)
ColorerListe(#ListIcon)
Else
MessageRequester("Erreur", DatabaseError())
EndIf
Else
MessageRequester("Information", "La sélection a été annulée.", 0)
EndIf
FermerLaBaseDeDonnees()
EndProcedure