Utilisation d'une base de donnée

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Heero
Messages : 28
Inscription : sam. 24/avr./2004 18:21

Utilisation d'une base de donnée

Message par Heero »

Salut J'aimerais créer un programme utilisant une base de donnée mais je ne sait pas que base de donnée utiliser dans l'aide il est ecrit qu'il prend en compte les base de donnée acces mais esqu'il prend en compte les base de données de works ou exel ou autre d'ailleurs ?
je voudrait que le programme cherche dans la base de données une information demandé par l'utilisateur est ce compliqué a faire ?
Y'a t'il une sources de programme faisant deja cela pour que je puisse m'en aider ?
Merci d'avance
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

http://purebasic.hmt-forum.com/viewtopic.php?t=715

il me semble qu'il y a aussi des exemples sur CodeArchiv (PureArea.net)

Et peut-être Dans CodeFr ? je ne sais pas ,fouille tu trouveras sûrement ton bonheur .
Heero
Messages : 28
Inscription : sam. 24/avr./2004 18:21

Message par Heero »

Je suis allé voir. y'a pas une possibilité d'utiliser les fontions "database" de purebasic ?
Yves Rouquier
Messages : 40
Inscription : mar. 23/mars/2004 10:23

Message par Yves Rouquier »

Bonjour
J'ais fait pas mal de petites appli avec des bases acces.
J'ais utilisé du code trouver sur CodeArchiv (PureArea.net)
Utilisation d'odbc via la dll "ODBCCP32.DLL"

tu devra ecrire les requette en SQL

Exemple de code avec creation de lien odbc
si le lien odbc existe deja sur le micro seul des fonctions
pure sont necessaires.

Attention ce code ne marche pas tel que ! il faut une base acces etc ..
c'est juste un exemple !

Code : Tout sélectionner

#ODBCLibrary      = 1  ; constante : Numero de dll ouverte en cours
#StringMemory     = 1  ; constante : Numero de "AllocateMemory" en cours 


;======================================================================================================================================================
;                                             Procedure de Creation d'une source de donnée Utilisateur
;======================================================================================================================================================


Procedure.l MakeConnection(Driver.s, strAttributes.s) 
  
  Result = OpenLibrary(#ODBCLibrary, "ODBCCP32.DLL")              ; Ouverture de la dll
  If Result                                                       ; Si la dll est ouverte on continue
    MyMemory = AllocateMemory(Len(strAttributes))  ; Allocation de la plage memoire
    CopyMemory(@strAttributes, MyMemory, Len(strAttributes))      ; Copie des infos de la base de donnée "chaine" dans la plage memoire 
    
    For L = 1 To Len(strAttributes)                               ; Check the string in the memory space now 
      If PeekB(MyMemory + L - 1) = Asc(";")                       ; If you find a semicolon anywhere in the string 
        PokeB(MyMemory + L - 1, 0)                                ; Replace it with an empty character as the driver doesn't use it 
      EndIf                                                       ; End the current check 
    Next L                                                        ; Check the next byte 
    
    Result = CallFunction(1, "SQLConfigDataSource", 0, 1, Driver, MyMemory)   ; Call the function you need from the ODBC library with the right details 
    
    FreeMemory(MyMemory)                                     ; Liberation de la memoire 
    
    CloseLibrary(#ODBCLibrary)                                    ; Fermeture de la dll  
    
    If Result                                                     ; Si la fonction de la dll fontionne elle renvoie 1
      ProcedureReturn 1                                           ; et la procedure purebasic renvoie aussi 1 !
    EndIf                                                         
    
  EndIf                                                           ; Fin de la procedure
  
EndProcedure 

Procedure DeleteConnection(Driver.s,name.s) 
  
  Result=OpenLibrary(#ODBCLibrary,"ODBCCP32.DLL") 
  If Result 
    
    strAttributes.s = "DSN="+ name 
    Result = CallFunction(1, "SQLConfigDataSource",  0,#ODBC_REMOVE_SYS_DSN,Driver,strAttributes) 
    
    CloseLibrary(#ODBCLibrary) 
    If Result 
      ProcedureReturn 1;MessageRequester("Info","DSN Delete",0) 
    EndIf 
  EndIf 
  
EndProcedure 



;======================================================================================================================================================
;                                             debut du programme 
;======================================================================================================================================================






;- Creation de la source de donnée Utilisateur (Mise en forme)



Driver.s = "Microsoft Access Driver (*.mdb)"                   ; Driver pour Acces

name.s = "MA_BASE"                                             ; Nom de la source de donnée utilisateur  ( DSN )

databasename.s = "\\chemin de la base\BASE_DE_DONNEES.mdb"    ; Nom de la base ( avec chemin )

sysdbname.s = "\\chemin de la base \BASE_SYS.MDW"             ; Nom de la base system ( avec chemin ) 

uid.s = ""                                                     ; Login Utilisateur

pwd.s = ""                                                     ; Mot de passe


strAttributes.s ="Server=APServer;Description=" + name + ";DSN=" + name + ";DBQ=" + databasename + ";SystemDB=" + sysdbname +";UID=" + uid + ";PWD=" + pwd + ";"   

resultat=MakeConnection(Driver.s, strAttributes.s)           ; Appel de la procedure





;===================== init du module base de données  pour PureBasic ========================

If InitDatabase() = 0
  MessageRequester("Erreur", "Pas de drivers ODBC", 0)
  
  End
EndIf





; ======================= Ouverture de la console ===========================

OpenConsole()
ConsoleTitle("Recherche de code insee") 




; ===================== Creation des variables ==============================

Utilisateur$ = "USER"
MotdePasse$ = "******"
ODBCDatabaseName$ = "MA_BASE"
LIBELLE_COMMUNE$.s
CODE_COMMUNE$.s
LenMax.l
Lentest.l = 0
Recherche$=""


PrintN("")



;=============== Demande entrez criteres de recherche ======================

Print("Entrez un masque de recherche ( 3 caracteres au moins !) : ")

Recherche$=Input()



;=========== Mise en forme du texte de la variable Request$  ===============


Request$ = "SELECT * FROM REF_COMMUNE WHERE LIBELLE LIKE '%" + Recherche$ + "%' ORDER BY LIBELLE"






;======================== Ouverture avec test de la base de donnée avec purebasic ! ===============

If OpenDatabase(0, ODBCDatabaseName$, Utilisateur$, MotdePasse$) = 0
  MessageRequester("Erreur", "Impossible d'ouvrir Base de donnee",0)
  End
EndIf


;=====================  envoie d'une requette SQL avec test =================


If DatabaseQuery(Request$)=0
  MessageRequester("Erreur", "erreur dans la requette SQL",0)
  CloseDatabase(0)
  End
EndIf

ClearConsole() 

PrintN("")
PrintN("")





;============ Recherche du NB de carractere le plus long du champ LIBELLE =======


While NextDatabaseRow()  


 LIBELLE_COMMUNE$= GetDatabaseString(1)
  
 Lentest=Len(LIBELLE_COMMUNE$)
 
 If Lentest > LenMax
 
    LenMax = Lentest
    
 EndIf
 
  
Wend





;=====================  envoie d'une requette SQL avec test =================
;=============== Relance de la même requette que plus haut ! ================


If DatabaseQuery(Request$)=0
  MessageRequester("Erreur", "erreur dans la requette",0)
  CloseDatabase(0)
  End
EndIf



  
;========================= Mise en forme et affichage des libelle commune ==================


coul=4




While NextDatabaseRow() 


  LIBELLE_COMMUNE$ = GetDatabaseString(1) 
  
  CODE_COMMUNE$ = GetDatabaseString(0)
  
  
  Repeat
  
      LIBELLE_COMMUNE$ = LIBELLE_COMMUNE$ + "."   ; Boucle ajout de "."
  
  Until Len(LIBELLE_COMMUNE$) > (LenMax + 4)      
  

  ConsoleColor(15,coul)
    
  PrintN(LIBELLE_COMMUNE$ + CODE_COMMUNE$)
  
  If coul = 4
    coul = 9
  Else
    coul = 4
  EndIf
    
    
  
  
    
  
Wend
  




CloseDatabase(0) 

resultat = DeleteConnection(Driver.s,name.s)   ; destruction du lien ODBC



;
PrintN("")
PrintN("")

PrintN("Fin du programme  [ENTER] pour Quitter !")

val$=Input()



End
; ExecutableFormat=Console
Heero
Messages : 28
Inscription : sam. 24/avr./2004 18:21

Message par Heero »

Ok Merci je vais y jeter un coup d'oeil pour voir ce que ça donne
Répondre