Page 1 sur 3

[..] Création de la fonction "Recherche" de mon script.

Posté : mer. 22 avr. 2009 17:32
par BeCool
Salut a tous.

Ca fait un petit bout de temps que je suis pas passer dans le coin et que j'ai pas pu continuer mon projet de Trombinoscope.

Vu que j'ai eu un peu de temps de libre cette aprem, j'en ai profité pour essayé de continuer ce que j'avais commencer mais rien n'y fait ... Je suis toujours autant paumé.

J'aurais donc voulu savoir si une âme bien charitable pouvais me développer ma fonction "Recherche" de mon trombi svp.
Un truc simple, pas prise de tête. Je demande juste a ce que ça fonctionne.

Si besoin de précisions, n'hésitez pas a demander.
► Afficher le texte
P.S: Un lien qui pourra vous aider ;) http://www.autoitscript.fr/forum/viewto ... i&start=15

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : mer. 22 avr. 2009 18:28
par GaRydelaMer
Bonjour

comme dis dans le Post précèdent, je pense que ton outils aurait plus de chance de mieux fonctionner avec une base de données.

Ceci dit, pour ton cas faire la recherche revient a chercher un fichier INI.

C'est pas des plus souples et des plus rapides. Manque de souplesse car tu pourras chercher que par le nom ou le prénom. Il existe une fonction dans les UDF posté y a peu de temps par TLEM (FileListToArray).
Cette fonction prends en paramètre le chemin ou chercher un pattern de recherche.

Revenons un moment sur les bases de données.
Faire une recherche revient à exécuter une seule commande SQL la clause Where et une base bien structurée fera vite l'affaire, et te permettra de l'utiliser dans divers environnement, je pense par exemple à une mise en ligne sur l'intranet, plus simple car un seul fichier à sauvegarder la base et pas les x fichiers INI.
Comme ceci: Une table Personnes avec les champs de ton fichier INI, et pourquoi pas ajouter aussi une table Services. Ca te permettra de faire une recherche de toutes les personnes d'un même service par exemple chose assez compliquer a faire avec tes fichiers INI.

Et si tu as besoin d'aide dans ce sens n'hésite pas.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 09:24
par BeCool
Faire un base de donnée, je veux bien, mais je n'y connais rien (enfin, j'arrive juste a modifier quelques trucs dans une BDD quand j'en ai besoin mais mes connaissances s'arrêtent là).

C'est bien ça le problème.

Et même avec les explications de VooDoo je n'avais pas compris grand choses ... :(

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 11:49
par GaRydelaMer
Re

pas compliqué, imagine la base de donnée comme une bibliothèque, sur les rayons des livres, ce sont les tables.
Pour accéder à 1 livre et le trouver rapidement tu as les index.

Maintenant pareil en info, pour accéder a des informations (les données d'un livre),
1/ tu ouvres la bibliothèque, tu créer une connexion.
2/ Tu créer une requête, un objet RecordSet

3/ tu parcours, tu lis, affiche et/ou modifie.

4/ pour être propre tu fermes le livres, le RecordSet, puis la porte de la bibliothèque, la connexion.

1er truc à faire choisir ton moteur de bdd. Moi j'utilise le plus souvent Access pour du local et que j'ai access plus facile pour les requêtes. Mais tu en as bcp d'autres, on t'a parlé de SqlLIte, facile a utiliser avec AutoIt, et sous fireFox tu as une extension pour te permettre de gérer la base.

Bon dans ton cas:
table tb_Personnes
Personne_id, Nom, Prenom, Service_id, Fonction_id, NumTel1, NumTel2, Mail
Tables tb_Services
Service_id, Service, NumSecretaire, Etage
Table tb_Fonctions
Fonction_Id, Fonction

Voila 3 tables les champs avec Nomdelatablesansle"S"_id sont la klé de la table, et dans la table tb_Personnes tu as aura le lien entre 1 personnes et sa fonction et le service.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 12:33
par BeCool
En gros, pour CREER la bdd, ça donnerais un truc de ce genre là ?
► Afficher le texte

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 13:45
par GaRydelaMer
oui mais il te faut donner le type de chaque champ et éventuellement des propriété.

Par ex:
CREATE TABLE "tb_Personnes" ("Personne_id" NUMERIC PRIMARY KEY NOT NULL , "Nom" CHAR NOT NULL , "Prenom" CHAR NOT NULL )
Etc...

Comme type tu as INTEGER, DOUBLE, FLOAT, REAL, CHAR, TEXT, VARCHAR, BLOB, NUMERIC, DATETIME.
En plus tu peux limité leur longueur, pour les CHAR(10) pour 10 caractères.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 14:16
par BeCool
Ok...
Serrait-il possible d'avoir un tuto ou quelque chose dans le genre pour savoir les équivalences des types de champs, et des propriétés ?

Sous forme de tableau par éxemple, du genre

Type :
Integer = ?
Double = ?
Float = ?
Etc...

Propriétés :
NUMERIC PRIMARY KEY NOT NULL = ?
CHAR NOT NULL = ?

Oui je suis novice dans la création de bdd :(

Edit : Je viens de trouver quelque chose. http://lecompagnon.info/access/tables.h ... bles-types
Mais étant une brèle en anglais, je n'arrive pas a faire correspondre certains trucs ...

Edit 2 : J'ai tenté de faire quelque chose quand même :
► Afficher le texte
Qu'en pensez vous ?

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 16:12
par GaRydelaMer
Un bon début:

Code : Tout sélectionner

http://sql.developpez.com/
Tuto pour débuter avec le SQL.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 16:57
par GaRydelaMer
INTEGER pour les nombres, Entier
DOUBLE la c'est une histoire de grandeur
FLOAT
REAL

CHAR pour les textes
TEXT pareil une histoire de grandeur du champ
VARCHAR


BLOB ici plutôt pour stocker du binaire, ex une image

NUMERIC
DATETIME ici pour les format de date

tu peux créer une seule Primary Key, clé primaire par table. donc à corriger !!!

Ensuite le Not NUll c'est pour dire que l'on accepte pas dans al table la valeur Null dans un champ. ATTENTION Null est diffèrent de ""

Ici on est dans ce qu'on appelle des base des données relationelles, c'est ainsi que l'on créer la table Service lier à la table Personnes par un champ de même type, et par convention et habitude de même nom.
=> La table Service a une clé (identifiant unique) Service_id, comme Pimary KEY de type (Entier long) et en général Auto Incremental (chaque fois que tu ajoute une ligne dans la table ce champs va se calculer tout seul pour assurer l'intégrité de la base) lier au champ Service_id de type (entier long) de cette facon la base de données va pourvoir comprendre une relation entre tes 2 tables.

Les relations:

le plus souvent de 1 à plusieurs=> Pour une valeur de la table services (c-a-d 1 service) tu as plusieurs lignes dans la table personnes (plusieurs employé dans 1 service, mais chaque personne est unique).

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 17:31
par BeCool
Et comment fait-on pour vérifier ce qu'il y a dans la bdd créée ? Je ne peux l'ouvrir avec notepad ++ ni avec access 2007.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : jeu. 23 avr. 2009 17:35
par GaRydelaMer
Si tu as access utilise un base Access, j'en ai parlé pas mal de fois dans le forum. Les principes sont exactement les mêmes.
Regarde du coté de ADO.

Pour ouvrir ta base SQLLite sous acces il te faut installé les drivers ODBC (http://www.ch-werner.de/sqliteodbc/) et sous acces tu attache des tables ODBC.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 10:21
par BeCool
J'y comprend rien ... J'ai même installé un UNF Access.au3 et AccessConstants.au3, pour créer ma BDD, et évidement, ça ne marche pas ... Il y a une erreur de "codage" de Access.au3 ..

Bon j'arrive quand même a créer ma BDD, mais elle est vide ...

Edit : Pour ce qui est de la partie de ODBC, je n'ai strictement rien compris ...

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 10:37
par GaRydelaMer
Bonjour,

le plus simple pour toi, c'est de faire ta base de donnée avec Access.

Créer tes tables, et les requêtes que tu auras besoins. L'avantage de faire avec access c'est que tu auras une vrai interface graphique pour le faire.

Une fois ca de fait, on regardera comment tu vas y accéder depuis AutoIt.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 11:03
par BeCool
Lol dsl d'être un boulet :oops:

Je vais faire cette base et je reviens de suite!

Edit: Voilà, BDD créée.
Et maintenant Docteur ? :)

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 11:12
par GaRydelaMer

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 11:41
par BeCool
J'ai beau lire et relire, et lire des autres trucs sur le net pour essayé de comprendre, mais j'y comprend rien :(

Je crois que je suis un cas désespéré ...

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 11:49
par GaRydelaMer
Mais non !!!

Tu vas y arriver.

Souvient toi.

1 on ouvre
2 on envoie une requete (le SQL)
3 on lit le résultat et on l'affiche

2 objets ADO: ADODB.Connection, et ADODB.Recordset.

Fais un test ajoute avec Access des données dans les tables, et donne moi le nom de la base, des tables et des champs.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 12:12
par BeCool
Dans le principe, j'ai bien compris la chose, mais c'est dans l'application que je suis totalement perdu.

J'ai donc fais ce que vous m'avez dis, a savoir ajouter des données dans les tables. Voici ce que j'ai fais :

Table "tb_Personnes" :
Personne_id : 11 (attribution automatique)
Nom : Capitaine
Prenom : Hadock
Service_id : 5
Fonction_id : 3
NumTel1 : 0001
NumTel2 : 0476730001
Mail : c.hadock@dupon.fr

Table "tb_Services"
Service_id : 5
Service : Informatique
Etage : 1

Table "tb_Fonctions"
Fonction_id : 3
Fonction : Stagiaire


A savoir qu'il n'y a qu'une ligne créée par table.
Si vous voulez, je peux faire des screenshots pour que ce soit peut être plus compréhensible.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 14:26
par GaRydelaMer
Non c'est bon j'ai créer la même base. (d:\beCool.mdb)
(Je crois que je vais finir par faire un tuto)

1/ se connecter à la base.

Dans lien Donner plus haut il y a la fonction ADO_Open() elle te retourne un objet ADODB.Connection.
En paramètre juste le chemin de la base
Global $bdd= "c:\beCool.mdb"
Global $oConn = ADO_Open($bdd)

Alors ajoute aussi dans les liens plus haut l'interception par AutoIt des Erreurs.

Re: [..] Création de la fonction "Recherche" de mon script.

Posté : ven. 24 avr. 2009 14:52
par GaRydelaMer
Jouons un peu avec la connexion.
Un objet Connection représente une session unique avec une source de données. Dans le cas d'un système de base de données client/serveur, il peut correspondre à une connexion réseau au serveur. Selon la fonctionnalité prise en charge par le fournisseur, certaines collections, méthodes ou propriétés d'un objet Connection peuvent ne pas être disponibles.

Les collections, méthodes et propriétés d'un objet Connection permettent de :
-Configurer la connexion avant l'ouverture à l'aide des propriétés ConnectionString, ConnectionTimeout et Mode.
-Définir la propriété CursorLocation pour appeler le fournisseur du curseur côté client prenant en charge les mises à jour par lots.
-Définir la base de données par défaut de la connexion à l'aide de la propriété DefaultDatabase.
-Définir le niveau d'isolation pour les transactions ouvertes sur la connexion à l'aide de la propriété IsolationLevel.
-Spécifier un fournisseur OLE DB à l'aide de la propriété Provider.
-Établir, et par la suite interrompre, la connexion physique à la source de données à l'aide des méthodes Open et Close.
-Exécuter une commande sur la connexion à l'aide de la méthode Execute et configurer l'exécution à l'aide de la propriété CommandTimeout.
-Gérer les transactions sur la connexion ouverte, notamment les transactions incorporées si celles-ci sont prises en charge par le fournisseur, à l'aide des méthodes BeginTrans, CommitTrans et RollbackTrans et de la propriété Attributes.
-Vérifier les erreurs renvoyées par la source de données à l'aide de la collection Errors.
-Vérifier le numéro de version ADO utilisée à l'aide de la propriété Version.
-Obtenir des informations sur le schéma de votre base de données à l'aide de la méthode OpenSchema.

Pour obtenir le Schema des tables. (la liste des tables dans la base)
► Afficher le texteAutoIt
Une autre façon de parcourir la liste des champs et obtenir des infos dessus:

Code : Tout sélectionner

For $Field In $oRS.Fields
    ConsoleWrite($Field.Name & @LF)
    ConsoleWrite("  " & $Field.Type & @LF)
    ConsoleWrite("  " & $Field.Value & @LF)
Next