A voir également:
- Tuto VB/Access
- Vb - Télécharger - Langages
- Tuto tableau croisé dynamique - Guide
- Tuto torrent - Guide
- Tuto chromecast - Guide
- Tuto rufus windows 11 - Guide
284 réponses
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
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 ^^)
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 questionfonction calcul(vrai as boolean)
Pourquoi envoyer vrai à la fonction calcul ? cha me chiffonne cha mouai !!!
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
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. ;)
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/
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)
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.
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)
Ah ça je ne sais pas .... je ne sais pas si on peut faire : datagrid1.col(1).visible = false ... par exemple.
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)
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.
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)
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
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 ?
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.