Base de données

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Base de données

#1

Message par Nicoloquinte »

Bonjour , Je voulais vous poser une question qui peut se poser pour tout types de codes mais je préfère ce forum

Je doit stocker des information sur 1000 patients ,mais aussi , une fiche par consultation et deux fiches permanentes et la je ne sais pas comment :
- Une base de données SQL, peut -être trop compliqué et manque de tutoriels.
-De simples dossiers , Bien pour la portabilité et l’évolution du logiciel + non besoin de ce dernier pour accéder aux fiches mais peut être trop encombrant :mrgreen:

Avez vous d'autre idées ou des conseil (ou même des liens vers des tutos :mrgreen: )

Merci d'avance :mrgreen:
Nico ¤_¤
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Base de données  

#2

Message par walkson »

Bonsoir,
Pour construire une base de données, il faut créer (imaginer) son schéma. Dans le cas présent, il y a une table 'patients' avec ID par nom, nom, prénom, adresse et compagnie. En suite, il y a une table consultation. Je suppose que c'est la consultation d'un patient et donc il y aura l'ID du patient, la date, les commentaires, etc... Cette table sera reliée à la table 'patients' par son ID. mais comme il y a plusieurs patients, on peut imaginer autant de tables que de patients. En suite il y a "deux fiches permanentes" mais il faudrait des précisions.
Pour résumé, il y a une table centrale et des tables secondaires à l'image d'un embranchement. C'est une forme de schéma mais il en existe d'autres en fonction des données. Conclusion, pour vous aider ou vous conseiller, il faut des précisions....
A titre indicatif, il existe SQLite Expert Personal 3 (version Free) et SQLiteDatabaseBrowser (portable) qui sont des logiciels gratuits bien pratiques pour mettre en œuvre une BD et aussi pour tester des "formules Sqlites"
Et pour terminer, un peu de lecture:
http://www.w3schools.com/SQL/default.asp
http://www.tutorialspoint.com/sqlite/sqlite_syntax.htm
http://sql.sh/cours/case
http://sqlite.awardspace.info/syntax/localindex.htm
http://www.sqlitetutorial.net/sqlite-count-function/
https://www.techonthenet.com/sqlite/index.php
RMQ: Sql et Sqlite sont très proche en syntaxe.
Bon courage :mrgreen:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Re: Base de données

#3

Message par Nicoloquinte »

Merci beaucoup pour tout , tu m'aides beaucoup , mais je crois comprendre quil faut que je crée une table par patient ? Javais deja envisagé cela mais 1000 tables ça me parraissait beaucoup :mrgreen:
Nico ¤_¤
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Re: Base de données

#4

Message par Nicoloquinte »

Par contre tu n'a pas des tutos sur l'introduction du sql dans autoit
Nico ¤_¤
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Base de données

#5

Message par walkson »

Bonsoir,
C'est vrai, je n'ai pas trouvé de trace d'un tuto sur le forum.
Je vous joints un petit code qui pourra peut être vous éclairer
- création d'une base
- création d'une table
- insertion de données
- lecture des données
Il y a une chose qui peut paraitre trompeuse, c'est par exemple _SQLite_GetTable2d() qui renvoie OK ou nonOK
Les données sont renvoyées sur des variables comme ceci
Local $aResult, $iRows, $iColumns
$ok = _SQLite_GetTable2d(-1, "select nom, rue, ville, ref_ets from client where nom = 'toto';", $aResult, $iRows, $iColumns)
En fait, Autoit reste assez simple dans son usage. Toute la complexité vient surtout du langage Sqlite
#include <SQLite.au3>
#include <Array.au3>
   _SQLite_Startup()  ;_SQLite_Startup(@ScriptDir & "\sqlite3.dll")
   If @error Then
      MsgBox(16, "SQLite Error", "SQLite3.dll Can't be Loaded!")
         Exit -1
   EndIf
   $path = @ScriptDir & "\mydb1.db"
   _SQLite_Open($path) ;$sDatabase_Filename [optional] Database filename, by default will open a memory database.
   $dll = _SQLite_LibVersion()  ;Requires SQLite3.dll in Current or System directory.
   If @error Then
      MsgBox(0, "SQLite Error: " & @error, _SQLite_ErrMsg() & "  Fin du programme " & @ScriptLineNumber)
      _SQLite_Close()
      Exit
   EndIf
   $table = "CREATE TABLE IF NOT EXISTS  [client] ( " & @CRLF ;langage SQL !
   $table &= "  [ref_client] INTEGER PRIMARY KEY AUTOINCREMENT,  " & @CRLF
   $table &= "  [ref_ets] CHAR,  " & @CRLF
   $table &= "  [nom] TEXT,  " & @CRLF
   $table &= "  [rue] TEXT, " & @CRLF
   $table &= "  [ville] TEXT, " & @CRLF
   $table &= "  [cp] CHAR(5),  " & @CRLF
   $table &= "  [mail] TEXT,  " & @CRLF
   $table &= "  [tel] CHAR(14), " & @CRLF
   $table &= "  [port] CHAR(14),  " & @CRLF
   $table &= "  [responsable] TEXT); "
   $rep = _SQLite_Exec(-1, $table) ;An open database, use -1 to use last opened database
   If $rep <> $SQLITE_OK Then
      MsgBox($MB_SYSTEMMODAL, "SQLite Error: " & @error, _SQLite_ErrMsg() & "  Fin du programme >>" & @ScriptLineNumber)
      _SQLite_Close()
      Exit
   EndIf
      $nom = "toto"
      $rue = "rue sans tête"
      $ville = "versaille !"
      $cp = "?"
      $Numclient = Int(Random(1,1000))
      $telephon = "01.01.01.01.01"
      $portable = "06.06.06.06.06"
      $responsable = "absent"
      $Mail = "toto@autoit.fr"

      $ordre = "INSERT INTO client(nom,rue,ville,cp,ref_ets,tel,port,responsable,mail) VALUES "
      $ordre &= "('" & $nom & "','" & $rue & "','" & $ville & "','"& $cp &  "','"& $Numclient &  "'"
      $ordre &= ",'" & $telephon & "','" & $portable & "','" & $responsable & "','"& $Mail &  "');"
      $insert = _SQLite_Exec(-1, $ordre)
      If $insert <> $SQLITE_OK Then MsgBox(0,"Error","La création a échoué")

      Local $aResult, $iRows, $iColumns
      $ok = _SQLite_GetTable2d(-1, "select nom, rue, ville, ref_ets from client where nom = 'toto';", $aResult, $iRows, $iColumns)
      If $ok <> $SQLITE_OK Then MsgBox(0,"Error","La lecture a échoué")
      _ArrayDisplay($aResult)
      MsgBox(0,"",$iRows &"  "& $iColumns)
      _SQLite_Close()
      Exit
Si vous obtenez le message "SQLite Error", "SQLite3.dll Can't be Loaded!" c'est que la DLL est inexistante sur votre PC. #include <SQLite.dll.au3> devrait résoudre le problème sinon téléchargez la DLL sur le site Sqlite et la placer dans
le dossier System32 ou bien indiquez le chemin ex: _SQLite_Startup(@ScriptDir & "\sqlite3.dll")
Regardez aussi les exemples de l'aide, très utiles...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Re: Base de données

#6

Message par Nicoloquinte »

Merci beaucoup :mrgreen:
Nico ¤_¤
Répondre