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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#1

Message 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
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#2

Message 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.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#3

Message 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 ... :(
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#4

Message 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.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#5

Message par BeCool »

En gros, pour CREER la bdd, ça donnerais un truc de ce genre là ?
► Afficher le texte
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#6

Message 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.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#7

Message 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 ?
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#8

Message par GaRydelaMer »

Un bon début:

Code : Tout sélectionner

http://sql.developpez.com/
Tuto pour débuter avec le SQL.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#9

Message 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).
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#10

Message 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.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#11

Message 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.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#12

Message 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 ...
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#13

Message 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.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#14

Message 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 ? :)
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#15

Message par GaRydelaMer »

BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#16

Message 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é ...
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#17

Message 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.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

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

#18

Message 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.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#19

Message 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.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

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

#20

Message 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
 
Répondre