Code : Tout sélectionner
;************************************************************************************************************************
; Author : MicrodevWeb
; Project Name : TUTO développement modulaire
; Deccription : module db
; File Name : db.pbi
;************************************************************************************************************************
DeclareModule db
;-* PUBLIC VARIABLE/LIST/MAP/CONSTANTE
Global DbName.s="DbFacture.sqlite",user.s="",psw.s=""
Enumeration
#TEXT
#NUMERIQUE
EndEnumeration
;}
;-* PUBLIC DECLARATION
Declare Create()
Declare AllReadyExit(Table.s,column.s,value.s,Type=db::#TEXT,IdIgnore=-1)
Declare AddTauxTva(Taux.f)
Declare FillGadget(DbTable.s,LstItem.s,Id)
Declare SaveTauxTva(Taux.f,Id)
Declare DeleteTauxTva(Id)
Declare IntegrityErrorTauxTva(Id)
Declare IntegrityErrorPays(Id)
Declare SavePays(Nom.s,Id)
Declare AddPays(Nom.s)
Declare DeletePays(Id)
;}
EndDeclareModule
Module db
EnableExplicit
UseSQLiteDatabase()
;-* LOCAL VARIABLE/LIST/MAP/CONSTANTE
Global myDb
;}
;-* LOCAL DECLARATION
Declare CreateDbFile()
Declare OpenDb()
;}
;-* PRIVATE PROCEDURE
Procedure CreateDbFile()
; Si le fichier existe déjà on sort
If FileSize(DbName)<>-1:ProcedureReturn :EndIf
If CreateFile(0,DbName)=0
MessageRequester("Erreur base de données","Impossible de créer le fichier "+DbName)
End
EndIf
CloseFile(0)
EndProcedure
Procedure OpenDb()
; Création du fichier de la base de données
CreateDbFile()
myDb=OpenDatabase(#PB_Any,DbName,user,psw)
If myDb=0
MessageRequester("Erreur base de données","Impossible d'ouvrir la base de données")
End
EndIf
EndProcedure
;}
;-* PUBLIC PROCEDURE
Procedure Create()
Protected query.s,tableName.s
OpenDb()
;{ Création de la table pays
tableName="pays"
query="CREATE TABLE IF NOT EXISTS "+tableName+" ("
query+"id INTEGER PRIMARY KEY,"
query+"nom TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table localité
tableName="localite"
query="CREATE TABLE IF NOT EXISTS "+tableName+" ("
query+"id INTEGER PRIMARY KEY,"
query+"id_pays INTEGER,"
query+"nom TEXT,"
query+"code_postal TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table type_moyen_contact
tableName="type_moyen_contact"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"nom TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table client
tableName="client"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"id_localite INTEGER,"
query+"nom TEXT,"
query+"adresse TEXT,"
query+"reparque TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table moyen_contact
tableName="moyen_contact"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"id_type_moyen_contact INTEGER,"
query+"id_client INTEGER,"
query+"valeur TEXT,"
query+"reparque TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table categorie
tableName="categorie"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"nom TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table taux_tva
tableName="taux_tva"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"taux FLOAT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table taux_tva
tableName="taux_tva"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"taux FLOAT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table taux_tva
tableName="taux_tva"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"taux FLOAT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table produit
tableName="produit"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"id_categorie INTEGER,"
query+"id_taux_tva INTEGER,"
query+"nom TEXT,"
query+"remarque TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table commande
tableName="commande"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"date TXT,"
query+"numero_commande TEXT,"
query+"numero_livraison TEXT,"
query+"numero_facture TEXT,"
query+"id_localite INTEGER,"
query+"adresse TEXT,"
query+"id_client TEXT,"
query+"remarque TEXT)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
;}
;{ Création de la table lgn_commande
tableName="lgn_commande"
query="CREATE TABLE IF NOT EXISTS "+tableName+"("
query+"id INTEGER PRIMARY KEY,"
query+"id_commande INTEGER,"
query+"id_produit INTEGER,"
query+"qte INTEGER,"
query+"prix FLOAT"
query+"tva FLOAT,"
query+"livreON INTEGER,"
query+"factureON INTEGER)"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur à la création de la table "+tableName,DatabaseError())
End
EndIf
CloseDatabase(myDb)
;}
EndProcedure
Procedure AllReadyExit(Table.s,column.s,value.s,Type=db::#TEXT,IdIgnore=-1)
; Teste si une colonne de la table existe déjà
; Si IdIgnore=-1 alors recherche dans la table avec un id différent de IdIgnore
Protected query.s
query="SELECT * FROM "+Table+" WHERE "+column+"="
Select Type
Case #TEXT
query+myMacro::DobleCote(value)
Case #NUMERIQUE
query+value
EndSelect
If IdIgnore<>-1
query+" AND id!="+Str(IdIgnore)
EndIf
OpenDb()
If DatabaseQuery(myDb,query)=0
MessageRequester("Error AllReadyExit",DatabaseError())
End
EndIf
If FirstDatabaseRow(myDb)
CloseDatabase(myDb)
ProcedureReturn #True
EndIf
CloseDatabase(myDb)
ProcedureReturn #False
EndProcedure
Procedure AddTauxTva(Taux.f)
Protected query.s
OpenDb()
query="INSERT INTO taux_tva (taux) VALUES ("+StrF(Taux)+")"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur l'ord de l'ajout d'un taux de TVA",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #False
EndIf
CloseDatabase(myDb)
ProcedureReturn #True
EndProcedure
Procedure AddPays(Nom.s)
Protected query.s
OpenDb()
query="INSERT INTO pays (nom) VALUES ("+myMacro::DobleCote(Nom)+")"
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur l'ord de l'ajout d'un Pays",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #False
EndIf
CloseDatabase(myDb)
ProcedureReturn #True
EndProcedure
Procedure FillGadget(DbTable.s,LstItem.s,Id)
; Remplis les gadget en fonction d'une liste
; LstItem doit être renseigné comme suit
; id du gadget|db_colonne|nb_decimal ou 0|extention"
; les item sont séparé par chr(10)
Protected N,Nb,query.s,txt.s,Value.s,gadget,ext.s,NbDec
Nb=CountString(LstItem,Chr(10))
query="SELECT "
For N=1 To Nb+1
txt=StringField(LstItem,N,Chr(10))
query+StringField(txt,2,"|")+","
Next
; Retire la dernière virgule
query=Left(query,Len(query)-1)
query+" FROM "+DbTable
query+" WHERE id="+Str(Id)
OpenDb()
If DatabaseQuery(myDb,query)=0
MessageRequester("Error FillGadget",DatabaseError())
ProcedureReturn
EndIf
; Remplis les gadgets
N=0
If FirstDatabaseRow(myDb)=0
MessageRequester("Error FillGadget","L'id "+Str(id)+" de la table "+DbTable+" n'a pas été trouvé...")
ProcedureReturn
EndIf
For N=1 To Nb+1
txt=StringField(LstItem,N,Chr(10))
gadget=Val(StringField(txt,1,"|"))
ext=StringField(txt,4,"|")
Nb=Val(StringField(txt,3,"|"))
If gadget>0
Select DatabaseColumnType(myDb,N-1)
Case #PB_Database_Long
Value=Str(GetDatabaseLong(myDb,N-1))
Case #PB_Database_Float
Value=StrF(GetDatabaseFloat(myDb,N-1),NbDec)
Case #PB_Database_Double
Value=StrD(GetDatabaseDouble(myDb,N-1))
Case #PB_Database_Quad
Value=StrD(GetDatabaseQuad(myDb,N-1))
Case #PB_Database_String
Value=GetDatabaseString(myDb,N-1)
EndSelect
If ext<>""
Value+ext
EndIf
SetGadgetText(gadget,Value)
EndIf
Next
CloseDatabase(myDb)
EndProcedure
Procedure SaveTauxTva(Taux.f,Id)
Protected query.s
OpenDb()
query="UPDATE taux_tva SET taux="+Str(Taux)+" WHERE id="+Str(Id)
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur l'ord de la sauvegarde d'un taux de TVA",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #False
EndIf
CloseDatabase(myDb)
ProcedureReturn #True
EndProcedure
Procedure SavePays(Nom.s,Id)
Protected query.s
OpenDb()
query="UPDATE pays SET nom="+myMacro::DobleCote(Nom)+" WHERE id="+Str(Id)
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur l'ord de la sauvegarde d'un Pays",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #False
EndIf
CloseDatabase(myDb)
ProcedureReturn #True
EndProcedure
Procedure DeleteTauxTva(Id)
Protected query.s
OpenDb()
query="DELETE FROM taux_tva WHERE id="+Str(Id)
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur l'ord de la suppression d'un taux de TVA",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #False
EndIf
CloseDatabase(myDb)
ProcedureReturn #True
EndProcedure
Procedure DeletePays(Id)
Protected query.s
OpenDb()
query="DELETE FROM pays WHERE id="+Str(Id)
If DatabaseUpdate(myDb,query)=0
MessageRequester("Erreur l'ord de la suppression d'un Pays",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #False
EndIf
CloseDatabase(myDb)
ProcedureReturn #True
EndProcedure
Procedure IntegrityErrorTauxTva(Id)
Protected query.s
OpenDb()
query="SELECT * FROM produit WHERE id_taux_tva="+Str(Id)
If DatabaseQuery(myDb,query)=0
MessageRequester("Error IntegrityErrorTauxTva",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #True
EndIf
If FirstDatabaseRow(myDb)
ProcedureReturn #True
EndIf
CloseDatabase(myDb)
ProcedureReturn #False
EndProcedure
Procedure IntegrityErrorPays(Id)
Protected query.s
OpenDb()
query="SELECT * FROM localite WHERE id_pays="+Str(Id)
If DatabaseQuery(myDb,query)=0
MessageRequester("Error IntegrityErrorPays",DatabaseError())
CloseDatabase(myDb)
ProcedureReturn #True
EndIf
If FirstDatabaseRow(myDb)
ProcedureReturn #True
EndIf
CloseDatabase(myDb)
ProcedureReturn #False
EndProcedure
;}
EndModule