Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1502 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Parcourir une table Paradox pour remplir des champs..

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parcourir une table Paradox pour remplir des champs..

n°368504
ndmax
Posté le 22-04-2003 à 15:33:46  profilanswer
 

Slt !
 
Je souhaite réaliser une petite application
qui utilise des tables Paradox.
En fait, on doit choisir tout d'abord un nom
de fournisseur à l'aide d'une comboBox.
Mais je souhaite remplir cette comboBox
à partir de ma table des fournisseurs bien
évidemment  :)  
 
Mais en fait, je ne sais pas par quels moyens
je peux lire ma table, dans une colonne donnée,
en la parcourant pour remplir ma comboBox..  :??:  
 
Dois-je obligatoirement passer par des requêtes SQL
et si oui comment ?? ou y a t'il un autre moyen ??
 
Merci d'avance !  :jap:

mood
Publicité
Posté le 22-04-2003 à 15:33:46  profilanswer
 

n°368602
antp
Super Administrateur
Champion des excuses bidons
Posté le 22-04-2003 à 17:16:12  profilanswer
 

le moyen le plus rapide est d'utiliser une DBComboBox
 
est-ce que tu utilises Paradox par choix ou par obligation ? c'est pas le meilleur choix :/ idem pour BDE que tu utilises aussi j'imagine (plutôt qu'ADO)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°369163
ndmax
Posté le 23-04-2003 à 09:29:02  profilanswer
 

Paradox par obligation..
En fait, c'est dans le cadre d'un stage
et je me plie à ce que l'on me demande..  :heink:  
 
Mais quant à ta 2e question, je n'en sais rien
car je n'y connais pas encore grand chose..
 
Sinon, je ne vois pas comment écrire une
requête SQL afin d'utiliser le résultat,
en parcourant un à un, afin de remplir ma
combo. En fait, je ne sais pas quels composants
utiliser et comment les mettre en relation,
et surtout, où vont se trouver les enregistrements
ici du résultat de la requête ??
 
Merci.

n°369213
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-04-2003 à 10:36:35  profilanswer
 

enfin, soit, donc Paradox puisque c'est une obligation.
 
Tu utilises les composants TDatabase, TTable, TQuery je suppose ? (donc BDE)
Une des solutions est d'utiliser le TQuery, et de lui assigner soit un DatabaseName soit un DataSource selon ce que tu utilises pour la connexion aux tables, puis de faire ta requête et tu remplis ta liste :
 
with Query1 do
begin
  ComboBox1.Items.Clear;
  Close;
  SQL.Text := 'SELECT * FROM BIDULE';
  Open;
  while not Eof do  
  begin
    ComboBox1.Items.Add(FieldByName('Champ1';).AsString);
    Next;
  end;
end;
 
Sinon tu peux aussi mettre ta requête en design time dans le TQuery (ou utiliser un TTable si c'est une requête simple), mettre un TDataSet, le lier au TQuery (ou TTable), mettre une TDBComboBox, la lier au TDataSet, et normalement les données qui y apparaissent quand la connexion est ouverte sur le TQuery/TTable.
 
Mais souvent quand on utilise ces composants on se retrouve avec des trucs bricolés sur toutes les forms, et ça devient l'enfer.
 
Un conseil : passe par un TDataBase, et met tous les composants de connexion aux BD dans un Data Module (File -> New -> Data Module) pour isoler tout ce qui est accès BD, de manière à ce que dans les forms tu ne touches pas directement à la BD, tu fais juste des demandes de listes etc. (fonctions que tu ajoutes au Data Module)
C'est juste un conseil; tu n'es pas obligé de le suivre, mais je t'assure que le jour où tu dois changer des trucs dans la connexion à la BD toi (ou ton successeur sur le programme) va être très content de ça ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°369232
ndmax
Posté le 23-04-2003 à 10:56:43  profilanswer
 

Ok, je te remercie beaucoup de toutes
ces explications et conseils.
Ca fait plaisir de voir quelqu'un qui
ne traite pas de "newbie" comme énormément font..
 
En plus, je viens juste d'avoir des conseils
d'une personne ici, et je pense que combinés
aux tiens, je devrais aboutir à quelque chose
avant la fin de la journée  ;)  
 
Il m'a conseillé d'utiliser un alias, et ensuite
de me servir de TDataBase et TQuery.
Je ne sais plus si j'aurais besoin d'un TDataSource
mais bon, je verrai bien.
 
Voilà, je vais essayer tout ça.
Merci beaucoup  :jap:  
et je te tiens au courant !!

n°369244
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-04-2003 à 11:06:48  profilanswer
 

le TDataSource (que j'ai appelé à tord TDataSet :o) c'est pour si tu veux lier un TQuery/TTable à un composant "automatique" genre TDBEdit, TDBComboBox, etc. (composants qui affichent tout seul le contenu d'une table, ou la valeur du champ courant, etc.)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°369283
ndmax
Posté le 23-04-2003 à 11:27:08  profilanswer
 

Ok, merci  :jap:

n°369322
ndmax
Posté le 23-04-2003 à 11:56:01  profilanswer
 

Haa, là j'ai un tout petit pb..
Je reprends un ancien prog pour tester
les DataModules, avant de le faire dans
le programme dont j'ai parlé ici.
 
J'ai mis un DataModule comprenant une TTable,
une TDataSource et une TDataBase.
La TDataBase est reliée a un alias comprenant mes
tables  Paradox.
J'ai mis la propriété DataBaseName de la TTable
au nom de la même propriété de la TDataBase.
Enfin, la TDataSource est reliée à la TTable.
 
Je souhaite obtenir la liste des tables
référencées dans l'alias que j'ai créé,
et je ne vois pas comment..
J'ai testé plusieurs méthodes et j'ai tjs rien..
Ca ne doit pas être bien compliqué je pense.
Sois un doit falloir parcourir l'alias
avec un FindFirst et FindNext, ou alors
obtenir la liste de ces tables dans une TStrings.
 
Mais là, je bloque encore.. :heink:

n°369334
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-04-2003 à 12:14:39  profilanswer
 

TDatabase.GetTableNames ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°369337
ndmax
Posté le 23-04-2003 à 12:21:26  profilanswer
 

Ben il me fait une erreur à l'exécution..
Je mets une TStrings en paramètre,
mais erreur au niveau mémoire je crois.

mood
Publicité
Posté le 23-04-2003 à 12:21:26  profilanswer
 

n°369341
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-04-2003 à 12:27:54  profilanswer
 

"Je mets une TStrings en paramètre" c'est très vague :D
tu déclares juste une variable de type TStrings que tu lui passe ? c'est normal que ça plante :D
 
ex:
 
var
  liste: TStringList;
begin
  liste := TStringList.Create; // TStrings et ses dérivé ce sont des classes, il faut en créer une instance pour l'utiliser
  DataBase.GetTableNames(liste);
  // ici tu joues avec ta liste
  liste.Free; // on la supprime quand on n'en a plus besoin
end;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°369351
ndmax
Posté le 23-04-2003 à 12:36:55  profilanswer
 

Haaa, OK (je suis vraiment à l'Ouest..  :lol: )
Merci bien, je vais manger et j'essaie ça juste
après. Bon appétit  ;)  
 
 :jap:

n°369433
ndmax
Posté le 23-04-2003 à 14:32:14  profilanswer
 

Bon, c'est bon, ça marche nickel pour la liste !!
Merci beaucoup.
En plus maintenant, mon programme est beaucoup
plus léger et simple (avant je changeait le répertoire
courant, puis j'allais dans le répertoire des
tables et je le parcourais en prenant le nom de chaque
fichier *.db, sans prendre l'extension, et enfin
je l'ajoutait à ma combo...  :kaola: )
 
Mais maintenant, la combo est remplie de façon
très simple et c'est vrai que c'est plus sympa
avec le Module de Données.  :sol:  
 
Bon, je vais maintenant regarder pour lancer
la table sélectionnée (ça devrait encore simplifier
mon prog) et juste après, je reprends mon programme
avec les requêtes SQL !!
 
Merci merci !!  :jap:  :jap:  

n°369493
ndmax
Posté le 23-04-2003 à 15:05:43  profilanswer
 

Bon, c'est bon, les toutes petites modif
ont été faites et j'ai testé ==> NO PROBLEME !!!  :sol:  
 
Bon, je repasse donc à celui de ce matin.
J'espère que tu resteras dans les parages,
on ne sait jamais..  ;)  
 
Merci.

n°369606
ndmax
Posté le 23-04-2003 à 16:23:02  profilanswer
 

Bon, pour l'instant, ça fonctionne.
J'ai réussi à mettre dans une TDBComboBox
le résultat d'une requête.
 
Je me suis basé sur ce que tu m'avais donné
plus haut, mais j'ai dû me résigner à utiliser
FindFirst et FindNext sur la Query car ça me
faisait comme une boucle infinie avec le EOF..
 
Mais tu m'avais dit plus haut que la TDBComboBox
se remplissait "toute seule" mais je n'ai pas
réussi à le faire, bien que je lui ai appliqué
la propriété DataField..
Je ne sais pas alors si ça vaut le coup de la garder..

n°369609
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-04-2003 à 16:25:17  profilanswer
 

si tu la remplis manuellement vaut mieux pas la garder :D
une combobox normale suffira
Si l'Eof n'est pas détecté, à part un manque de "Next" je vois pas trop ce que ça pourrait être :??:
Faut peut-être faire un First entre le Open et le while.


Message édité par antp le 23-04-2003 à 16:25:41

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°369633
ndmax
Posté le 23-04-2003 à 16:38:32  profilanswer
 

OK. Bon, je vais laisser comme ça pour le moment
et si vraiment je suis embêté, j'essairai avec l'Eof.
 
Je vais remettre une ComboBox toute simple.

n°369635
ndmax
Posté le 23-04-2003 à 16:39:35  profilanswer
 

Au fait, je ne vois pas à quoi sert mon
TDataSource dans ce cas-là..  :??:

n°369674
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-04-2003 à 17:04:12  profilanswer
 
n°369710
ndmax
Posté le 23-04-2003 à 17:25:30  profilanswer
 

Je me disais aussi  :D  :D  
Bon, je continuerai tout ça demain.
 
Encore merci et bonne soirée !   :jap:

n°370097
ndmax
Posté le 24-04-2003 à 08:49:24  profilanswer
 

Bon, ça y est, je suis de retour!
Je vais donc me remettre au boulot ;)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Parcourir une table Paradox pour remplir des champs..

 

Sujets relatifs
Modifier le nom d'un champ d'une table[Delphi] MAJ d'une table..
Creation d une table de conversionparcourir tous les elements d'un formulaire
Comment récupère-t-on des champs facultatifs en vbtable en VBA
Comment modifier des champs en fonction de la langue choisie??[dBASE] Copier la structure d'une table pour mettre sous Excel
[HTML] Question sur un formulaire (tout champs hidden)Récupération de champs d'un formulaire créé dynamiquement
Plus de sujets relatifs à : Parcourir une table Paradox pour remplir des champs..


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR