A voir également:
- [ACCESS][VB] Envoyer variable dans champ
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Envoyer ma position - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
9 réponses
Hello,
Alors merci beaucoup! c'est super il comprend les variables! mais j'ai encore un petit problème, les champ reste vide...
alors voilà mon code:
Daten est ma table, strFeld est le nom du champ généré, Modultest... et une var numérique
et j'aimerais en fait que le champ strFeld de ma table Daten soit rempli avec Modultest.sngergebnis...
Voilà encore merci beaucoup!!
SubNoX
Alors merci beaucoup! c'est super il comprend les variables! mais j'ai encore un petit problème, les champ reste vide...
alors voilà mon code:
SQL = "UPDATE Daten " & _ "SET Daten." & strFeld & " = " & Modultest.sngErgebnis & " " & _ "WHERE Daten." & strFeld & " = 0;" DoCmd.RunSQL SQL
Daten est ma table, strFeld est le nom du champ généré, Modultest... et une var numérique
et j'aimerais en fait que le champ strFeld de ma table Daten soit rempli avec Modultest.sngergebnis...
Voilà encore merci beaucoup!!
SubNoX
Alors strFeld est bien une variable, qui contient le nom du champ
pour modultest.sngErgebnis, c'est une variable aussi qui contient un chiffre
mais seulement à l'exécution tout se passe bien, en revanche après quand j'ouvre la table pour contrôler les valeur des champs créer sont vide...
Peut-être une question pour être sur d'avoir bien compris:
set Daten. strFeld = c'est bien pour dire de mettre la valeur de Modultest.sngErgebnis dans le champ strFeld de la table Daten!?
avec la condition que le champ strFeld = 0
c'est bien juste!?
Merci pour tout
pour modultest.sngErgebnis, c'est une variable aussi qui contient un chiffre
mais seulement à l'exécution tout se passe bien, en revanche après quand j'ouvre la table pour contrôler les valeur des champs créer sont vide...
SQL = "UPDATE Daten " & _ "SET Daten." & strFeld & " = " & Modultest.sngErgebnis & " " & _ "WHERE Daten." & strFeld & " =0"
Peut-être une question pour être sur d'avoir bien compris:
set Daten. strFeld = c'est bien pour dire de mettre la valeur de Modultest.sngErgebnis dans le champ strFeld de la table Daten!?
avec la condition que le champ strFeld = 0
c'est bien juste!?
Merci pour tout
Alors tout à l'air nickel!
sauf que juste avant la msgBox il m'avertit que j'envisage de mettre à jour 0 champ...
je comprend pas trop parce qu'en fait le champ que je vais mettre à jour à bien la valeur 0 à la base...
et la msgBox affiche ca: UPDATE Daten SET Daten.AM_0107 = 12 WHERE Daten.AM_0107 = 0
et au fait quand je supprime la condition WHERE il me met une erreur...
Merci en tout cas!!
sauf que juste avant la msgBox il m'avertit que j'envisage de mettre à jour 0 champ...
je comprend pas trop parce qu'en fait le champ que je vais mettre à jour à bien la valeur 0 à la base...
et la msgBox affiche ca: UPDATE Daten SET Daten.AM_0107 = 12 WHERE Daten.AM_0107 = 0
et au fait quand je supprime la condition WHERE il me met une erreur...
Merci en tout cas!!
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
23 juil. 2007 à 11:05
23 juil. 2007 à 11:05
Ton champ 0107, il est décrit comment dans la table : num, chaine ?
et au fait quand je supprime la condition WHERE il me met une erreur...
laquelle ?
et au fait quand je supprime la condition WHERE il me met une erreur...
laquelle ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alors après tout ce temps je suis quand même arriver à qqch...
J'ai étudié le code DAO et j'ai opté pour ca plutôt que le SQL du fait que j'ai toute une table à mettre à jour et pas seulement un champ...
En revanche j'ai aussi eu quelques souci car j'ai fait une fonction publique dans mon code:
et il se trouve que j'ai du utiliser "DefaultValue" pour modifier la valeur car quand je mettais Value j'obtenais une erreur... je suppose que le tout est lié
Mais en tout cas je te remercie beaucoup pour ton aide!
Si ca ne t'ennui pas trop, j'aurais en revanche encore besoin de ton aide! :-)
Je crée ici un champ dans ma Table "Daten"
Et en fait mon petit problème est le suivant: j'aimerais faire un test au début de la déclaration pour voir si le champ que je vais créer (ici strFeld(variable text)) existe déjà ou pas
Peut-être avec Dlookup!?
Merci d'avance
J'ai étudié le code DAO et j'ai opté pour ca plutôt que le SQL du fait que j'ai toute une table à mettre à jour et pas seulement un champ...
En revanche j'ai aussi eu quelques souci car j'ai fait une fonction publique dans mon code:
Public Function RenommeChamp(oBaseDeDonnees As DAO.Database, strNomTable As String, strAncienNom As String, strNouveauNom As String) As Boolean Dim Tbl As DAO.TableDef 'Mettre la table dans Tbl Set Tbl = oBaseDeDonnees.TableDefs(strNomTable) 'Modifier l'ancienne valeur du champ avec la nouvelle Tbl.Fields(strAncienNom).DefaultValue = strNouveauNom 'Mettre RenommeChamp à True RenommeChamp = True Exit Function End Function
et il se trouve que j'ai du utiliser "DefaultValue" pour modifier la valeur car quand je mettais Value j'obtenais une erreur... je suppose que le tout est lié
Mais en tout cas je te remercie beaucoup pour ton aide!
Si ca ne t'ennui pas trop, j'aurais en revanche encore besoin de ton aide! :-)
Je crée ici un champ dans ma Table "Daten"
Set oDb = CurrentDb Set oTbl = oDb.TableDefs("Daten") Set fldNeu = oTbl.CreateField(strFeld, dbDouble) oTbl.Fields.Append fldNeu oTbl.Fields.Refresh
Et en fait mon petit problème est le suivant: j'aimerais faire un test au début de la déclaration pour voir si le champ que je vais créer (ici strFeld(variable text)) existe déjà ou pas
Peut-être avec Dlookup!?
Merci d'avance
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
23 juil. 2007 à 15:50
23 juil. 2007 à 15:50
Avec ce code-là, tu pourras énumérer les champs de la table daten :
Il me semble que tu veuilles créer des champs nommés par le couple mois/année. Ce n'est pas une très bonne solution, car si tu envisages d'en créer beaucoup, ACCESS ne suivra pas toujours (255 champs maxi pour une table), sans compter la difficulté à créer des formulaires basés sur cette table dont la définition changera souvent...
Il serait plus judicieux de créer une autre table qui contiendrait les données mois/jour avec une clé primaire qui serait justement ces mois/jour et une relation avec la table principale.
Dim Tb As TableDef Dim Fld For Each Tb In CurrentDb.TableDefs 'MsgBox Tb.Name If Tb.Name = "Daten" Then For Each Fld In Tb.Fields MsgBox Fld.Name Next End If NextCependant, je voudrais te mettre en garde contre une difficulté qui pourrait t'apparaître plus tard, lors de la gestion de ta base.
Il me semble que tu veuilles créer des champs nommés par le couple mois/année. Ce n'est pas une très bonne solution, car si tu envisages d'en créer beaucoup, ACCESS ne suivra pas toujours (255 champs maxi pour une table), sans compter la difficulté à créer des formulaires basés sur cette table dont la définition changera souvent...
Il serait plus judicieux de créer une autre table qui contiendrait les données mois/jour avec une clé primaire qui serait justement ces mois/jour et une relation avec la table principale.
Voilà j'y suis enfin arriver!!!
C'est vrai que si une table ne peut en contenir que 255 c'est limite, mais j'ai calculé ca devrait allé! ;-)
Cependant j'ai pas bien compris l'idée de mois/jour!? parce qu'en fait le AM_0107 : AM = nom d'un secteur et 0107 = janvier 2007
Et sinon puis-je encore te poser une question!?
J'aurais besoin de parcourir une liste champ et faire passer à chaque enregistrement un test (if ...)
comment puis-je faire!?
Merci pour toute ton aide précieuse!
C'est vrai que si une table ne peut en contenir que 255 c'est limite, mais j'ai calculé ca devrait allé! ;-)
Cependant j'ai pas bien compris l'idée de mois/jour!? parce qu'en fait le AM_0107 : AM = nom d'un secteur et 0107 = janvier 2007
Et sinon puis-je encore te poser une question!?
J'aurais besoin de parcourir une liste champ et faire passer à chaque enregistrement un test (if ...)
comment puis-je faire!?
Merci pour toute ton aide précieuse!
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
>
SubNoX
24 juil. 2007 à 14:38
24 juil. 2007 à 14:38
Cependant j'ai pas bien compris l'idée de mois/jour!? parce qu'en fait le AM_0107 : AM = nom d'un secteur et 0107 = janvier 2007
C'est tellement plus simple de créer une autre table qui va contenir ces données plutôt que de les mettre dans une table dont on va modifier la structure tous les mois... En plus, c'est contraire aux bonnes pratiques des bases de données relationnelles.
J'aurais besoin de parcourir une liste champ et faire passer à chaque enregistrement un test (if ...)
comment puis-je faire!?
Tu veux parcourir des enregistrements et faire des tests sur des champs ?
Il faut utiliser un recordset.
C'est tellement plus simple de créer une autre table qui va contenir ces données plutôt que de les mettre dans une table dont on va modifier la structure tous les mois... En plus, c'est contraire aux bonnes pratiques des bases de données relationnelles.
J'aurais besoin de parcourir une liste champ et faire passer à chaque enregistrement un test (if ...)
comment puis-je faire!?
Tu veux parcourir des enregistrements et faire des tests sur des champs ?
Il faut utiliser un recordset.
Oui c'est vrai que ca sera certainement plus simple... mais le truc c'est que je crée ces champs et ces tables automatiquement en fontion de 2 dates (date début / date fin) et je ne les connais pas à l'avance, de plus je cherche à faire que les tables et les champs se créent eux-mêmes par le formulaire car le programme ne doit plus être touché ou modifier une fois utiliser et les dates (enfin date de fin peut aller jusqu'à 2020, voir plus...) donc je voulais pas m'amuser à créer toutes les tables en fonction des années
Voilà pourquoi je les crée automatiquement!
Alors le truc c'est que j'ai un formulaire dans lequel il y a une liste champ qui contient les données d'une table, j'aimerais pouvoir parcourir cette liste champ depuis un autre formulaire pour pouvoir effectuer un test sur chaque enregistement "ligne" de la liste.
Voilà, mais le truc c'est que j'ai aucune idée comment m'y prendre...
avec un recordset!? je vois pas bien comment!?
Merci
Voilà pourquoi je les crée automatiquement!
Alors le truc c'est que j'ai un formulaire dans lequel il y a une liste champ qui contient les données d'une table, j'aimerais pouvoir parcourir cette liste champ depuis un autre formulaire pour pouvoir effectuer un test sur chaque enregistement "ligne" de la liste.
Voilà, mais le truc c'est que j'ai aucune idée comment m'y prendre...
avec un recordset!? je vois pas bien comment!?
Merci
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
20 juil. 2007 à 16:17
20 juil. 2007 à 16:17
Salut,
tu peux passer par une requête UPDATE à lancer via DoCmd.RunSQL...
tu peux passer par une requête UPDATE à lancer via DoCmd.RunSQL...
Ok j'ai essayé de voir ce que je pouvais faire avec cette fonction, mais je débute un access et j'aurais une autre question...
Alors avant cette commande, il faut que j'implante dans une variable un code en SQL à passé!? c'est bien ca?
Du style:
Dim SQL As String
SQL = "UPDATE Employees " & _
"SET Employees.Title = 'Regional Sales Manager' " & _
"WHERE Employees.Title = 'Sales Manager'"
DoCmd.RunSQL SQL
Mais ca c'est l'exemple de l'aide et ca m'aide pas beaucoup je dois dire...
J'espère que tu pourras m'aider merci et désolé pour mon niveau...
Alors avant cette commande, il faut que j'implante dans une variable un code en SQL à passé!? c'est bien ca?
Du style:
Dim SQL As String
SQL = "UPDATE Employees " & _
"SET Employees.Title = 'Regional Sales Manager' " & _
"WHERE Employees.Title = 'Sales Manager'"
DoCmd.RunSQL SQL
Mais ca c'est l'exemple de l'aide et ca m'aide pas beaucoup je dois dire...
J'espère que tu pourras m'aider merci et désolé pour mon niveau...
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
20 juil. 2007 à 16:48
20 juil. 2007 à 16:48
Un truc comme ça devrait aller :
A+ Blux
Dim SQL As String SQL = "UPDATE Employees " & _ "SET Employees.Title = '" & zone_du_formulaire.value & "' " & _ "WHERE Employees.Title = 'Sales Manager'" DoCmd.RunSQL SQL--
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
SubNoX
>
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
20 juil. 2007 à 16:59
20 juil. 2007 à 16:59
Ok je te remercie, je m'en suis sorti, mais maintenant j'ai un autre problème...
C'est que en fait ici j'ai des variables...
Je ne sais pas si c'est quand même possible de le faire, mais je l'espère car je suis obligé de travailler avec des variables...
Merci beaucoup en tout cas!
C'est que en fait ici j'ai des variables...
Dim SQL As String SQL = "UPDATE Employees " & _ "SET Employees.Title = Variable' " & _ "WHERE Employees.Title = Variable" DoCmd.RunSQL SQL
Je ne sais pas si c'est quand même possible de le faire, mais je l'espère car je suis obligé de travailler avec des variables...
Merci beaucoup en tout cas!
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
>
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
20 juil. 2007 à 17:06
20 juil. 2007 à 17:06
Si mais il faut sortir les variables de la chaine pour indiquer à ACCESS de les interpréter avant d'envoyer la chaine à l'exécution :
A+ Blux
Dim SQL As String SQL = "UPDATE Employees " & _ "SET Employees.Title = '" &Variable & "'" & _ "WHERE Employees.Title = '" & Variable & "';" DoCmd.RunSQL SQLQuand on teste une valeur chaine, il faut mettre des quotes ('), par contre, il n'en faut pas pour du numérique :
"SET Employees.Title = " & Variable & _--
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
23 juil. 2007 à 10:46
23 juil. 2007 à 10:46
mais seulement à l'exécution tout se passe bien
S'il y a une erreur de SQL, ACCESS ne dit rien !
C'est seulement, s'il y a une erreur à l'exécution qu'il plante (ligne en double, clé non renseignée...)
Fais un affichage de SQL, pour voir... (msgbox SQL)
S'il y a une erreur de SQL, ACCESS ne dit rien !
C'est seulement, s'il y a une erreur à l'exécution qu'il plante (ligne en double, clé non renseignée...)
Fais un affichage de SQL, pour voir... (msgbox SQL)
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
23 juil. 2007 à 11:55
23 juil. 2007 à 11:55
sauf que juste avant la msgBox il m'avertit que j'envisage de mettre à jour 0 champ...
Il ne dit rien d'autre : violation de clé, de contraintes... ?
Ton champ est lié à un autre par une relation ?
Il ne dit rien d'autre : violation de clé, de contraintes... ?
Ton champ est lié à un autre par une relation ?
blux
Messages postés
26473
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
15 novembre 2024
3 316
23 juil. 2007 à 12:46
23 juil. 2007 à 12:46
Si tu crées une requête dans ACCESS avec le contenu de ta msgbox et que tu la lances, il dit quoi ?
23 juil. 2007 à 10:14
Modultest.sngErgebnis est une variable ou un champ dans le formulaire ? si c'est un champ dans le formulaire, il faut en récupérer la valeur : Modultest.sngErgebnis.value