Tuto VB/Access
Fermé
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
-
5 juin 2008 à 11:53
Rikkunter - 22 août 2008 à 16:18
Rikkunter - 22 août 2008 à 16:18
A voir également:
- Tuto VB/Access
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Tuto chromecast - Guide
- Convertisseur youtube en mp3 tuto - Guide
- Tuto tableau croisé dynamique - Guide
284 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 juil. 2008 à 10:39
1 juil. 2008 à 10:39
Oui apparemment c'est bien une fonction récursive qu'il faut faire. Mais tu peux très bien faire appel à une fonction en utilisant un booléan.
En gros et rapidement.
Pour le 1 et 2, ça ne doit pas te poser de problème, tu sais faire.
Pour le 3, il faut faire appel à une fonction qui vérifie
Pas sûr, mais je commencerai comme ça. Ecrire tes conditions ligne par ligne (pas en code, en bon français ou pseudo code) et ensuite fait ta fonction de recherche, également en pseudo code.
;o)
PS: Tu as des nouvelles de Rikki ? l'ai pas beaucoup vu depuis que tu es parti en vacances :-S
En gros et rapidement.
Pour le 1 et 2, ça ne doit pas te poser de problème, tu sais faire.
Pour le 3, il faut faire appel à une fonction qui vérifie
Si la séquence Std1(seq1) est un standard. Si le retour est oui, alors je récupère les séquences seq1 et je vérifie que STDseq1(seq1.1) est un standard, si oui, je recommence avec STDseq1.1(seq1.1.1) ... etc. si non, je recommance avec STDseq1.1(seq1.1.2) ... etc. si non, je vérifie si Std2(seq1) est un standart ... etc ...
Pas sûr, mais je commencerai comme ça. Ecrire tes conditions ligne par ligne (pas en code, en bon français ou pseudo code) et ensuite fait ta fonction de recherche, également en pseudo code.
;o)
PS: Tu as des nouvelles de Rikki ? l'ai pas beaucoup vu depuis que tu es parti en vacances :-S
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
1 juil. 2008 à 10:42
1 juil. 2008 à 10:42
Je vais essayer. :)
Ps : Rikk est en vacances. Et comme elle ne vient pas ici quand elle est chez elle, on est pas près de la revoir.
M'enfin je lui parle de temps en temps quand même. (c'est pratique msn ^^)
Ps : Rikk est en vacances. Et comme elle ne vient pas ici quand elle est chez elle, on est pas près de la revoir.
M'enfin je lui parle de temps en temps quand même. (c'est pratique msn ^^)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 juil. 2008 à 10:47
1 juil. 2008 à 10:47
ok, passe lui le bonjour à l'occaz
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
1 juil. 2008 à 15:03
1 juil. 2008 à 15:03
Pas de problèmes.
Je viens de me rendre compte que je me suis planté sur mes temps, je dois donc revoir un max de truc.
Mais ça simplifie grandement mon calcul de temps final.
En gros, je pensais que tu inscrivait le nom de tes séquences et que tu entrais tous les temps à la fin. C'était un gros bordel pour le calcul final. Mais en fait, à chaque séquence tu dois calculer un temps.
Donc mon projet va être plus lourd (ouverture d'une nouvelle fenêtre à chaque insertion de séquence ...).
Mais pour le calcul final je vais juste avoir à faire :
Et puis :
Je ne sais pas si c'est très clair, mais je pense que ça peut marcher. (ce n'est qu'un petit algo, hein ! J'ai encore des modifs à faire)
Je viens de me rendre compte que je me suis planté sur mes temps, je dois donc revoir un max de truc.
Mais ça simplifie grandement mon calcul de temps final.
En gros, je pensais que tu inscrivait le nom de tes séquences et que tu entrais tous les temps à la fin. C'était un gros bordel pour le calcul final. Mais en fait, à chaque séquence tu dois calculer un temps.
Donc mon projet va être plus lourd (ouverture d'une nouvelle fenêtre à chaque insertion de séquence ...).
Mais pour le calcul final je vais juste avoir à faire :
fonction calcul_temps récupérer Id récupérer séquences vrai = lirepremier If vrai = true appel fonction calcul(vrai) else "ça marche pas :P"
Et puis :
fonction calcul(vrai as boolean) While vrai = true if is_standard = 0 tmpséquence = calcul_temps_séquence tmps = tmps + tmpséquence vrai = liresuivant if vrai = false then end sub else appel calcul(vrai) end if else récup séquence vrai = lirepremier If vrai = true appel calcul(vrai) else "ça marche toujours pas" endif endif wend
Je ne sais pas si c'est très clair, mais je pense que ça peut marcher. (ce n'est qu'un petit algo, hein ! J'ai encore des modifs à faire)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 juil. 2008 à 15:34
1 juil. 2008 à 15:34
fonction calcul(vrai as boolean)
Pourquoi envoyer vrai à la fonction calcul ? cha me chiffonne cha mouai !!!
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
1 juil. 2008 à 15:40
1 juil. 2008 à 15:40
Oupsss. J'ai écris quelques lignes sur une feuille, mais ça je l'ai écris de tête.
C'est vrai que ça ne sert à rien. ^^
Je peux par exemple définir vrai à true au début pour qu'il entre dans le while.
De toute façon, lorsque le vrai me sert pour un if, je lui dit directement ce qu'il doit faire.
'tain, je suis claqué. Heureusement que je fini dans 20 min. :P
C'est vrai que ça ne sert à rien. ^^
Je peux par exemple définir vrai à true au début pour qu'il entre dans le while.
De toute façon, lorsque le vrai me sert pour un if, je lui dit directement ce qu'il doit faire.
'tain, je suis claqué. Heureusement que je fini dans 20 min. :P
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 juil. 2008 à 15:44
1 juil. 2008 à 15:44
lol ... pas assez fort le kawa c't'aprm
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
1 juil. 2008 à 16:00
1 juil. 2008 à 16:00
Je n'en avais même pas pris, c'est peut être pour ça. ^^
Bon je ne vais pas tarder à y aller moi.
Bonne soirée, pis travailles pas trop. ;)
Bon je ne vais pas tarder à y aller moi.
Bonne soirée, pis travailles pas trop. ;)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 juil. 2008 à 16:02
1 juil. 2008 à 16:02
merci, bonne soirée aussi
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
2 juil. 2008 à 08:26
2 juil. 2008 à 08:26
Salut Polux, la forme ?
C'est kewl les retours de vacances.
J'étais largué avant de partir, pis en fait mon projet est de plus en plus simple.
En fait pour le calcul du temps, ça n'est pas du tout ce que je pensais hier.
En fait chaque standard a un temps. Donc si une séquence est un standard, alors il suffit d'ajouter son temps au premier standard.
Mon boss était pas là hier. Aujourd'hui il arrive, prend 5min pour me réexpliquer et c'est reparti.
Vé me prendre un kawa et je serais d'attaque. \o/
C'est kewl les retours de vacances.
J'étais largué avant de partir, pis en fait mon projet est de plus en plus simple.
En fait pour le calcul du temps, ça n'est pas du tout ce que je pensais hier.
En fait chaque standard a un temps. Donc si une séquence est un standard, alors il suffit d'ajouter son temps au premier standard.
Mon boss était pas là hier. Aujourd'hui il arrive, prend 5min pour me réexpliquer et c'est reparti.
Vé me prendre un kawa et je serais d'attaque. \o/
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
2 juil. 2008 à 08:36
2 juil. 2008 à 08:36
Salut,
Ava bien merci ...
Ton projet te semblait compliqué avant les vacances parce que tu avais la tête dans le guidon comme on dit. Il faut prendre parfois du recul pour y voir plus clair ensuite.
Vais aussi me mettre un kawa au fond du gosier.
;o)
Ava bien merci ...
Ton projet te semblait compliqué avant les vacances parce que tu avais la tête dans le guidon comme on dit. Il faut prendre parfois du recul pour y voir plus clair ensuite.
Vais aussi me mettre un kawa au fond du gosier.
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
3 juil. 2008 à 14:08
3 juil. 2008 à 14:08
Salut Polux.
J'ai de nouveau une question. :P
Quand tu charges ton datagrid, tu utilise une requete "select champ1, champ2 from table".
Mais est ce qu'il serait possible de ne faire apparaître que le champ1 par exemple ?
Parce que j'aurais un champ qui sera une clé étrangère en gros. Il pointera sur l'id d'une autre table.
Je n'ai pas envie de l'afficher, mais je veux pouvoir l'insérer à chaque fois que j'entrerais un nouvel enregistrement dans ma table.
J'ai de nouveau une question. :P
Quand tu charges ton datagrid, tu utilise une requete "select champ1, champ2 from table".
Mais est ce qu'il serait possible de ne faire apparaître que le champ1 par exemple ?
Parce que j'aurais un champ qui sera une clé étrangère en gros. Il pointera sur l'id d'une autre table.
Je n'ai pas envie de l'afficher, mais je veux pouvoir l'insérer à chaque fois que j'entrerais un nouvel enregistrement dans ma table.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
3 juil. 2008 à 14:10
3 juil. 2008 à 14:10
Oui tu peux. C'est le résultat de la requête que tu affiches, donc si tu fais "Select champ1 form table" tu n'auras que le champ1.
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
3 juil. 2008 à 14:12
3 juil. 2008 à 14:12
Oui mais dans ce cas je ne peux pas modifier le champ qui m'intéresse.
Pour le moment je fais par exemple :
Form3.adoData3.Recordset![ja] = Trim(Me.txtJa.Text)
J'aimerais juste le rendre invisible.
Pour le moment je fais par exemple :
Form3.adoData3.Recordset![ja] = Trim(Me.txtJa.Text)
J'aimerais juste le rendre invisible.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
3 juil. 2008 à 14:16
3 juil. 2008 à 14:16
Ah ça je ne sais pas .... je ne sais pas si on peut faire : datagrid1.col(1).visible = false ... par exemple.
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
3 juil. 2008 à 14:21
3 juil. 2008 à 14:21
Ca n'existe même pas. ^^
Par contre, Me.DataGrid1.Columns(1).Visible = False existe mais ne fonctionne pas.
Par contre, Me.DataGrid1.Columns(1).Visible = False existe mais ne fonctionne pas.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
3 juil. 2008 à 14:30
3 juil. 2008 à 14:30
Que mon truc n'existe pas, ça m'étonne pas .. mdrrr j'ai mis ça de tête sans vérifier ... j'avais 1 chance sur un gros paquet d'être à coté de la plaque ... ^^
Plus étrange que Me.DataGrid1.Columns(1).Visible = False ne fonctionne pas. Je ne peux pas le vérifier là ... dsl. Il faut peut être une condition. As-tu regardé dans l'aide en ligne (F1) ?
;o)
Plus étrange que Me.DataGrid1.Columns(1).Visible = False ne fonctionne pas. Je ne peux pas le vérifier là ... dsl. Il faut peut être une condition. As-tu regardé dans l'aide en ligne (F1) ?
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
3 juil. 2008 à 14:32
3 juil. 2008 à 14:32
Je n'ai pas accès à l'aide en ligne.
"La condition msdn n'existe pas." ^^
Et vu que je n'ai pas envie d'aller chercher le cd qui est je ne sais où ...
Je vais bien trouver quelque chose sur le net. ;)
"La condition msdn n'existe pas." ^^
Et vu que je n'ai pas envie d'aller chercher le cd qui est je ne sais où ...
Je vais bien trouver quelque chose sur le net. ;)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
3 juil. 2008 à 14:41
3 juil. 2008 à 14:41
regarde sur vbfrance dans les exemples et astuces proposés.
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 08:18
4 juil. 2008 à 08:18
Dernière journée avant le we. \o/
Le Mans ce soir et Paris demain.
Salut Polux. Comment vas tu ? (je ne demande pas de nouvelles des autres parce que de toute façon il n'y a plus que nous 2 sur ce topic ^^)
Je me posais une petite question. (Encore ... :P )
A quel moment est créé l'enregistrement lorsqu'on fait :
Parce que j'ai mis ça dans un sub. J'ai également un appel à une fonction qui récupère le dernier id entré et va l'insérer dans le dernier enregistrement d'une autre table. (celui que j'ai créé juste au dessus).
Mais ça ne fonctionne pas. :S
Alors je me suis dit que peut être l'enregistrement n'était pas créé directement.
Le Mans ce soir et Paris demain.
Salut Polux. Comment vas tu ? (je ne demande pas de nouvelles des autres parce que de toute façon il n'y a plus que nous 2 sur ce topic ^^)
Je me posais une petite question. (Encore ... :P )
A quel moment est créé l'enregistrement lorsqu'on fait :
Form3.adoData3.Recordset.AddNew Form3.adoData3.Recordset![valeur] = Trim(Me.txtval.Text) Form3.adoData3.Recordset![ja] = Trim(Me.txtJa.Text)
Parce que j'ai mis ça dans un sub. J'ai également un appel à une fonction qui récupère le dernier id entré et va l'insérer dans le dernier enregistrement d'une autre table. (celui que j'ai créé juste au dessus).
Mais ça ne fonctionne pas. :S
Alors je me suis dit que peut être l'enregistrement n'était pas créé directement.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 08:34
4 juil. 2008 à 08:34
Bonjour,
Effectivement, on doit seul sur ce topic :D
En principe l'enregistrement se fait avec le AddNew ... quand tu appelles la procèdure qui contient ce code. Je vais peut être dire une connerie (à cette heure, c'est fort probable) ... ne faut-il pas terminer par un Update ?
;o)
Effectivement, on doit seul sur ce topic :D
En principe l'enregistrement se fait avec le AddNew ... quand tu appelles la procèdure qui contient ce code. Je vais peut être dire une connerie (à cette heure, c'est fort probable) ... ne faut-il pas terminer par un Update ?
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 08:43
4 juil. 2008 à 08:43
Comme je l'ai dit, j'ai également dans le permier sub un appel à un autre. (bon c'est vrai j'ai dis une fonction ^^)
ModESEnt_STD.initTableEnt_STD query = "SELECT max(id_std) from ent_std" Set rs = New ADODB.Recordset Vrai = ModuleBdD.OpenRecordset(query, rs) ValueId = rs.Fields(0) Set rs = Nothing ModESCal.initTableCal query = "SELECT max(num_ligne) from calcul_ligne" Set rs = New ADODB.Recordset Vrai = ModuleBdD.OpenRecordset(query, rs) ValueNum = rs.Fields(0) Set rs = Nothing Set rs = New ADODB.Recordset If Vrai = True Then rs.Open "Update calcul_ligne Set id_std = " & ValueId & " Where num_ligne= " & ValueNum, ModuleBdD.cnx Else MsgBox "Un problème est survenu durant le calcul du temps" End If
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 08:53
4 juil. 2008 à 08:53
Je comprends pas tout là. Dsl, mais j'ai le neurone pas encore réveillé.
Ici :
Tu fais un addnew à travers un objet adodc qui a un lien direct avec une table de la base ?
Et dans le post 558 (eh oui déjà ...lol) tu fais un Update avec un recordset via ADODB.
A quel niveau l'enregistrement ne se fait pas ?
Ici :
Form3.adoData3.Recordset.AddNew Form3.adoData3.Recordset![valeur] = Trim(Me.txtval.Text) Form3.adoData3.Recordset![ja] = Trim(Me.txtJa.Text)
Tu fais un addnew à travers un objet adodc qui a un lien direct avec une table de la base ?
Et dans le post 558 (eh oui déjà ...lol) tu fais un Update avec un recordset via ADODB.
A quel niveau l'enregistrement ne se fait pas ?
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:00
4 juil. 2008 à 09:00
Bon je vais reprendre :
C'est plus clair ? ^^
En fait quant j'ajoute un nouvel enregistrement, il ne le prend pas en compte pour l'ajout de l'id avec l'update. Parce qu'il me met l'id sur l'enregistrement précédent.
Ca donne :
Num - Id - Ja - Valeur
42 - 12 - 32 - 54
43 - 0 - 56 - 89
Au lieu de m'ajouter l'id (par exemple 12) au dernier enregistrement, il me l'ajoute à la ligne précédente.
C'est pour ça que j'ai l'impression qu'il y a un décalage avec le AddNew.
Private Sub btAjout_Click() Form3.adoData3.Recordset.AddNew Form3.adoData3.Recordset![valeur] = Trim(Me.txtval.Text) Form3.adoData3.Recordset![ja] = Trim(Me.txtJa.Text) ModfrmForm3.AjId End Sub
Public Sub AjId() Dim Vrai As Boolean Dim ValueId, ValueNum As Long ModESEnt_STD.initTableEnt_STD query = "SELECT max(id_std) from ent_std" Set rs = New ADODB.Recordset Vrai = ModuleBdD.OpenRecordset(query, rs) ValueId = rs.Fields(0) Set rs = Nothing ModESCal.initTableCal query = "SELECT max(num_ligne) from calcul_ligne" Set rs = New ADODB.Recordset Vrai = ModuleBdD.OpenRecordset(query, rs) ValueNum = rs.Fields(0) Set rs = Nothing Set rs = New ADODB.Recordset If Vrai = True Then rs.Open "Update calcul_ligne Set id_std = " & ValueId & " Where num_ligne= " & ValueNum, ModuleBdD.cnx Else MsgBox "Un problème est survenu durant le calcul du temps" End If End Sub
C'est plus clair ? ^^
En fait quant j'ajoute un nouvel enregistrement, il ne le prend pas en compte pour l'ajout de l'id avec l'update. Parce qu'il me met l'id sur l'enregistrement précédent.
Ca donne :
Num - Id - Ja - Valeur
42 - 12 - 32 - 54
43 - 0 - 56 - 89
Au lieu de m'ajouter l'id (par exemple 12) au dernier enregistrement, il me l'ajoute à la ligne précédente.
C'est pour ça que j'ai l'impression qu'il y a un décalage avec le AddNew.