begin process at 2010 03 19 13:19:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Base de données

 > 

Access

 > 

TTable : recherche de données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

TTable : recherche de données

vendredi 6 février 2009 à 09:53:36 | TTable : recherche de données

xpmich

bonjour,
J'ai une table de quatre champs, je voudrais à partir de trois champ connu trouver la valeur du quatrième champ !

j'ai essayé :
if not MaTTable.Locate('T2.el_Ch1;T2.el_Ch2;T2.el_Ch3',VarArrayOf(['Renault','Rouge','1993']), [] )then
begin
   //...pas trouvé
end
else
   //...trouvé ok mais ou va le field resultant ??
end;

Les problèmes :
J'ai une erreur disant : 'Field 'T2.el_Ch1' not found'
J'ai essayé avec un filtre :
Code :

MaTTable.Filter:= '(T2.el_Ch1 like ''Renault'') AND ';
MaTTable.Filter:= MaDonnee.Liste.Filter + '(T2.el_Ch2 like ''Rouge'') AND ';
MaTTable.Filter:= MaDonnee.Liste.Filter + '(T2.el_Ch3 like ''1993'')';
MaTTable.Filtered  := true;

J'ai la même erreur.

Merci d'avane.
Xpmich
vendredi 6 février 2009 à 12:07:57 | Re : TTable : recherche de données

xpmich

Re,
J'ai trouvé la solution (qui me plait moyennement)
Le premier problème était que le nom de les colonnes n'était pas bon.
j'utilise donc le locate.
Le second problème est lié au TTable. Si je ferme la base de données, je ne peux plus utiliser mon TTable malgré que celle ci soit une copie de mes enregistrements retournés par la requête.
D'ou ma question :

Peut on utiliser une TTable de manière non connecté à une base de donnée ?
soit :
1- Emmision de la requête (je sais faire)
2- Copie du résultat de la requête dans un TTable
3- Déconnexion complète de la base (pouvant aller jusqu'à mabase := nil; (je sais faire)
4- Utilisation de la copie de la TTable (je sais faire)

Merci d'avance
Xpmcih
dimanche 8 février 2009 à 22:15:56 | Re : TTable : recherche de données

cantador

Membre Club
J'ai une table de quatre champs, je voudrais à partir de trois champ connu trouver la valeur du quatrième champ !

Ce n'est pas Locate qu'il faut utiliser mais Lookup..

cantador
vendredi 7 août 2009 à 08:36:32 | Re : TTable : recherche de données

xpmich

Bonjour,
pour réactualiser ma question :

Si je ferme la base de données, je ne peux plus utiliser mon TTable
malgré que celle ci soit une copie de mes enregistrements retournés par la requête.
D'ou ma question :

Peut on utiliser une TTable de manière non connecté à une base de donnée ?
soit :
1- Emmision de la requête (je sais faire)
2- Copie du résultat de la requête dans un TTable
3- Déconnexion complète de la base (pouvant aller jusqu'à mabase := nil; (je sais faire)
4- Utilisation de la copie de la TTable (je sais faire)
5- Permettre de faire un locate, déconnecté de la base sur un TTable

Merci d'avance
Xpmcih

vendredi 7 août 2009 à 13:50:18 | Re : TTable : recherche de données

beckerich

bonjour,

tu peux copier la table entière dans un TClientDataset et ensuite t'en servir.

Luc.

vendredi 7 août 2009 à 14:59:01 | Re : TTable : recherche de données

xpmich

Re Bonjour,

Ok mais comment lié une TClientDataSet ? Je crois me souvenir qu'un TClientDataSet doit être lié à une base ? Et c'est justement ce que je ne veux pas. Mon resultat de requête arrive obligatoirement (pour moi) dans une TTable. En gros, comment faire TClientDataSet := TTable ??

Merci d'avance
Xpmich

vendredi 7 août 2009 à 15:17:00 | Re : TTable : recherche de données

beckerich

salut,

j'utilise les clientdataset comme table indépendante de la base en créant, soit en mode conceptuel sous delphi, soit en dynamique pendant l'exécution, la même structure de champs que la table ou le query me retournant les données de la base.

un petit exemple d'une procédure qui récupère des données de ma base interbase et qui les insère dans un TClientDataset.

procedure TFM_FTP_LISTE.ChargerFiches;
begin
b_chargement := True;
CDS_FTP.EmptyDataSet;
CDS_FTP.IndexName := '';
with TIBQuery.Create(Self) do
begin
try
Database := GO_APP.Database;
SQL.Add('select F.*, C.*, A.PRXUNT PRXACH, V.*'
+ ' from TRPCLS C, TRPPRXACH A, TRPFTP F left outer JOIN TRPPRXVEN V'
+ ' on V.SERFTP = F.SERFTP'
+ ' where'
+ ' F.CODVIS <> :CODVIS'
+ ' and C.SERCLS = F.SERCLS'
+ ' and A.SERFTP = F.SERFTP'
+ ' and A.DATEFF = (select max(X.DATEFF) from TRPPRXACH X'
+ ' where X.SERFTP = A.SERFTP'
+ ' and X.DATEFF <= :DATEFF)'
+ ' and (V.DATEFF = (select max(Y.DATEFF) from TRPPRXVEN Y'
+ ' where Y.SERFTP = V.SERFTP'
+ ' and Y.DATEFF <= :DATEFF)'
+ ' or V.DATEFF is null)');
Prepare;
ParamByName('DATEFF').Value := SED_DATEFF.Date;
ParamByName('CODVIS').Value := '9';
Open;
while not Eof do
begin
CDS_FTP.Insert;
CDS_FTP.FieldByName('SERFTP').Value := FieldByName('SERFTP').Value;
CDS_FTP.FieldByName('LIBFTP').Value := FieldByName('LIBFTP').Value;
CDS_FTP.FieldByName('CODVIS').Value := FieldByName('CODVIS').Value;
CDS_FTP.FieldByName('CODTVA').Value := FieldByName('CODTVA').Value;
CDS_FTP.FieldByName('SERCLS').Value := FieldByName('SERCLS').Value;
CDS_FTP.FieldByName('SERPRX').Value := FieldByName('SERPRX').Value;
CDS_FTP.FieldByName('PRXACH').Value := FieldByName('PRXACH').Value;
CDS_FTP.FieldByName('PRXVEN').Value := FieldByName('PRXUNT').Value;
CDS_FTP.FieldByName('UNTVEN').Value := FieldByName('UNTVEN').Value;
CDS_FTP.FieldByName('CODCLS').Value := FieldByName('CODCLS').Value;
CDS_FTP.FieldByName('LIBCLS').Value := FieldByName('LIBCLS').Value;
CDS_FTP.FieldByName('DATEFF').Value := FieldByName('DATEFF').Value;
if (CDS_FTP.FieldByName('PRXACH').AsFloat > 0) and
(CDS_FTP.FieldByName('PRXVEN').AsFloat > 0) then
CDS_FTP.FieldByName('COFMUL').Value := CDS_FTP.FieldByName('PRXVEN').AsFloat / CDS_FTP.FieldByName('PRXACH').AsFloat;
CDS_FTP.Post;
Next;
end;
CDS_FTP.IndexName := 'ix_codcls';
CDS_FTP.First;
finally
Free;
end;
end;
b_chargement := False;
b_modif := False;
end;

consulte ceci :

http://edn.embarcadero.com/delphi/database/design

tu trouveras des articles de Cary Jensen sur les clientdatasets



Cette discussion est classée dans : ch1, t2, filter, el, mattable


Répondre à ce message

Sujets en rapport avec ce message

Filter une table sous delphi 5 [ par bfouad ] Bonjour,Je n'arrive pas à filter une table en utilisant une variable comme critère de filter.Ex. (Nomtable.filter:='Champ = i';)ou 'Champ', c'est le n Filter à partir d'un label dans un DBGrid [ par crsi ] Bonjour,Je cherche une méthode me permettant de filtrer des données contenue une DBGrid et se sans devoir cliquer sur un bouton, mais que le filtre s' reqete de jointure sql avec au moin 3 tables [ par developpeur_mehdi ] bonjours Comment peut on efféctuer une jointure entre plus de 3 tables petite exemple Code: select t2.code_machine, t2.Code_consommable from consommab Pb avec SaveDialog.Filter [ par ToTo 44 ] voila je d'ébute en delphi et je reprend le projet d'une personne qui touché plutot pas malAlors voila suivant ce que je sauvegarde il met pas l'exten Au secours (Filter_Print QuickReport) [ par slim59 ] Slt. à tous. Voila j'ai développé une application avec Delphi7, ça marchetrès bien. Voilà y'a quelque jrs. suis coinçé dans une procédureconcernant Filtres sur un DbGrid (TQuery.filter) [ par orelien ] Bonjour,J'aimerais appliquer un filtre sur un DbGrid relié à un TQuery à l'aide de la propriété "filter". Le filtre est définit par l'utilisateur dans Filter avec deux critères de sélection ?! [ par crsi ] Après le 50/50, l'appel à un ami, je demande l'avis du public ...Je voudrais filtrer une base de donnée T_clients (Nom, Prenom,Adresse,...) avec 2 cri Filter [ par pseudoOM ] Bonjour à tous,je voudrais appliquer un filtre à une de mes ADOTable pour que celle-ci me retourne les enregistrements qui se situent entre le 1/01 et Propriété Filter [ par codial ] Bonsoir,voilà je patauge lamentablement  avec cette syntaxe et j'ai beau chercher je ne trouve que des exemples avec un champ alors je vous la propose Filtrer une table [ par codial ] Bonjour,Je veux créer un filtre pour extraire dans les enregistrements d'une table une sous chaine d'une chaine avec :   Table1.FilterOptions:=[foCase


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales