begin process at 2012 02 14 23:40:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Base de données

 > 

SQL

 > 

assigner des valeurs d'un recordset


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

assigner des valeurs d'un recordset

mercredi 19 novembre 2008 à 20:01:00 | assigner des valeurs d'un recordset

ronanry

Bonjour a tous,

petite question sur l'utilisation de la fonction eval (je suis en vba sous access)
Posons tout d'abord les hypotheses :

soit le code suivant

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    dim maquery as string

    maquery = "select champ1,champ2 from matable where id=1"
    Set db = CurrentDb
    Set rs = db.OpenRecordset(MaQuerie)
    rs.OpenRecordset
    forms!form1.champ1 = rs!champ1
    forms!form1.champ2 = rs!champ2

avec champ1 et champ2 prséent sur mon form1, jusque la rien de bien compliqué me direz vous.

Maintenant si je veux le meme code mais avec 25 champs (et que les 25 champs soit définis sur mon form1)
maquery devient donc :
maquery = "select champ1,champ2,champ3,champ4,champ5...., champ25 from matable where id=1"
et l'assignation des variables en bas devient d'autant plus longues
    forms!form1.champ1 = rs!champ1
    forms!form1.champ2 = rs!champ2
    forms!form1.champ3 = rs!champ3
    forms!form1.champ4 = rs!champ4
    .....
    forms!form1.champ25 = rs!champ25
   
pour faciliter la chose j'ai voulu pondre un truc comme ca :

for each elem in rs.fields
    eval("forms!form1." & elem & " = rs!" & elem)
next

vous vous doutez que si je poste ce message c'est parce que ca n'a pas voulu marcher :D

en fait eval fait le test de savoir si forms!form1.champ1 = rs!champ1 et n'assigne pas rs!champ1 a mon champ sur mon formulaire...

quelqu'un aurait il une idée brillante ?

Merci d'avance
mercredi 19 novembre 2008 à 20:24:06 | Re : assigner des valeurs d'un recordset

PCPT

Administrateur CodeS-SourceS
salut,

euh ... pour éviter tout doute de suite :
"champ1" (et les autres), c'est par exemple LE NOM de d'une textbox? ou une valeur....

eval va par exemple retourne la valeur 5 pour "text1.value + text2.value", contenant respectivement "1" et "4"

si tes champs s'appellent vraiment "champ1 2 3 ..." dans la base, alors toute ta méthode est fausse....

çà ne sera pas
rs!NOM_HASARDEUX_N
mais
rs.fields("champ" & N)

si c'est des zones de texte (par exemple) qui contiennent des valeurs, celles-ci étant le NOM du champs, çà sera bien
rs.fields(champN.Text)
le contenu donc...



Prenez un instant pour répondre à ce sondage svp 
mercredi 19 novembre 2008 à 20:38:24 | Re : assigner des valeurs d'un recordset

Orohena

Réponse acceptée !

Bonjour ronanry

Je n'ai malheureusement pas Access sur ce poste, donc je n'ai pas pu vérifier si le code ci-dessous est correct du point de vue de la syntaxe, et s'il est pertinent pour le problème posé.

Je te fais deux propositions honnêtes :

-     Eval("forms1." & elem.Name & " = rs!" & elem.Name)
-     Eval("forms1." & elem.Name & ".Value = rs!" & elem.Name & ".Value")

Si ça ne fonctionne pas, tu peux essayer de te passer d'Eval, en utilisant la collection Controls :

For Each elem In rs.Fields
   Me.Controls(elem.Name).Value = elem.Value
Next

Si rien ne fonctionne, c'est que, décidément, une idée brillante n'est pas dans mes possibilités

Amicalement

jeudi 20 novembre 2008 à 13:18:38 | Re : assigner des valeurs d'un recordset

ronanry

Merci Pcpt et Orohena pour vos reponses

Pcpt j'suis pas sur qu'on se soit bien compris
Orohena :
- le probleme d'eval est que , si tu met le code que tu met (ou le mien) eval te retourne true ou false en fait....
il fait le test booleen et non l'assignation de variable
- Ton idée de me.controls me plait assez...vais tester ca de suite (merci d'y avoir penser pour moi :) ... on est a 3 a planché sur le sujet avec 2 autres informaticiens et on voyait vraiment pas comment le faire :p)

le pire c'est que ca marche !!!!!

BRAVO A TOI

sur votre formulaire, definissez 2 champ texte nommé objet et statut
dans une fonction mettez ceci
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MaQuery As String

    MaQuery = "select objet,statut from liste_demande where id=1"
    Set db = CurrentDb
    Set rs = db.OpenRecordset(MaQuery)
    rs.OpenRecordset
   
    For Each elem In rs.Fields
        Me.Controls(elem.Name).Value = elem.Value
    Next


et voila....je me repete mais : bravo a toi
jeudi 20 novembre 2008 à 19:14:05 | Re : assigner des valeurs d'un recordset

Orohena

C'est cool

A bientôt



Cette discussion est classée dans : forms, rs, form1, champ1, champ2


Répondre à ce message

Sujets en rapport avec ce message

2 forms qui se suivent?? [ par jia2812 ] Slt à ts les progs'!Voilà, j'ai 2 forms: Form1 & Form2.Ds la Form1, y a 1 bouton pr appeler la Form2 avec la commande que ns connaissons ts [.Show]. C SQL Regroupement [ par zeprogrameur ] Salut à tous les développeurs!!!Quelqu'un sait-il comment effectuer (en SQL) une concaténation das un regroupement.exemple: 3 champsCHAMP1 CHAMP2 test d'existence (recordset) [ par macflyFR ] bonjour,j'utilise un recordset pour récupérer des données XML. Je me retrouve du coup avec un truc du style :rs!champ1rs!champ2Sur certains "pas" (row ListView et retour a la ligne [ par weedtrompette ] Bonjour,Voici mon probleme.J'ai une listview liée à une imagelist.Les elements de la listview sont ajoutés dynamiquement en fonction du résultat d'une somme d'un champ calculé [ par acorna ] Hello ,voilà, dans un de mes états sous access, j'ai un champ calculé [Champ1]*[Champ2], dans la partie détail.En pied de page,il me faudrait calcule CONCATENATION DE CHAINES DANS ACCESS [ par code9 ] Est-il possible de formater du texte dans la concaténation de chaînes?Exemple:=[champ1] & " / " & [champ2] & [champ3]1. lors de l'affichage de l'état, Parcourir une BD (3): optimisation [ par ] Bonjour à tous, hé oui, je reviens encore avec le même sujet mais un problème différent.Je dois repèrer une phrase comme celle-ci:"Bonjour à tout le m Access et bind de combo box [ par ava0275 ] Bonjour a tous ,je crée une table avec des infos : Table1 <FONT style Non réversibilité dans l'ouverture de deux forms sous Delphi [ par Francky23012301 ] Salut à tous Bon j'explique je suis nouveau sous Delphi avant je travaillais sous C++ donc la conversion est dure. Voila j'ai deux forms Form1 avec recordset [ par billoute 50 ] Bonjour je me pose plusieurs questions concenant les ADODB.recordset (je l'ai nommé rs)Quel est la conséquence d'un rs.close() et quand doit t'on l'ut


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,778 sec (4)

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