l'ID est le début d'une BDD à une table
Public Function load(ByVal fichier As String) As Boolean Try Dim myFileStream As Stream = File.OpenRead(fichier) Dim deserializer As New BinaryFormatter() Dim lecture As New ClS_compte lecture = CType(deserializer.Deserialize(myFileStream), ClS_compte) myFileStream.Close() ' attribut la list des lignes à me Me.lignes = lecture.lignes ' attribut le resteà ME. Me.mdp = lecture.mdp Me.types = lecture.types Me.budgets = lecture.budgets 'récupére le nombre de ligne initiale (avant mise à jour mensuel) 'attention au code de pcpt c'est for i = 1 to count, puis i-1 Dim NB_ligne As Integer = lecture.lignes.Count '- 1 'merci pcpt ^^ ' recherche les mise à jour à faire (échéancier) For ligne As Integer = 1 To NB_ligne ' si c'est une ligne échéancier et que la date correspond au début du mois ' et que ce mois n'est pas déja rempli (ou alors si c'est une nouvelle année) alors If Now.Day >= 1 AndAlso lecture.lignes(ligne - 1).L_mensuel _ AndAlso (Now.Month > lecture.lignes(ligne - 1).L_date.Month _ Or Now.Year > lecture.lignes(ligne - 1).L_date.Year) Then ' retire à l'anciénne ligne le status de mensuel lecture.lignes(ligne - 1).L_mensuel = False 'lecture.save(fichier) à voir si change kk chose ' ajouter cette nouvelle ligne ! Dim new_ligne As CLS_lignes lecture.lignes(ligne - 1) 'pas besoin de new le instancie new_ligne (merci pcpt) new_ligne.L_date = CDate(lecture.lignes(ligne - 1).L_date.Day & " " & Now.Month & " " & Now.Year) new_ligne.L_pointage = False new_ligne.L_mensuel = True lecture.lignes.Add(new_ligne) 'pourquoi les deux lignes ont la même valeur de date ???? new_ligne = Nothing End If Next Return True
mon code de mensualisation me retourne deux lignes (ou plutôt) modifie la premiére comme la premiére
dupliquer la ligne en désactivant la ligne enfant pour la propriété mensuel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub échéancier() 'récupére le nombre de ligne initiale (avant mise à jour mensuel) 'attention au code de pcpt c'est for i = 1 to count, puis i-1 'marche pareil que si count-1 et pas de -1 à chaque i, en fin ligne ^^ ' mais bon je lui fait confiance ^^ Dim NB_ligne As Integer = mon_compte.lignes.Count '- 1 ' recherche les mise à jour à faire (échéancier) For ligne As Integer = 1 To NB_ligne ' si c'est une ligne échéancier et que la date correspond au début du mois ' et que ce mois n'est pas déja rempli (ou alors si c'est une nouvelle année) alors If Now.Day >= 1 AndAlso mon_compte.lignes(ligne - 1).L_mensuel _ AndAlso (Now.Month > mon_compte.lignes(ligne - 1).L_date.Month _ Or Now.Year > mon_compte.lignes(ligne - 1).L_date.Year) Then ' retire à l'anciénne ligne le status de mensuel mon_compte.lignes(ligne - 1).L_mensuel = False ' ajouter cette nouvelle ligne ! Dim new_ligne As New CLS_lignes 'pas besoin du new car le = instancie new_ligne (merci pcpt) 'sauf que là ben je doit faire comme ça pour que cela marche ???? With (new_ligne) .L_mensuel = True .L_pointage = False .L_budget = mon_compte.lignes(ligne - 1).L_budget .L_type = mon_compte.lignes(ligne - 1).L_type .L_commentaire = mon_compte.lignes(ligne - 1).L_commentaire .L_date = CDate(mon_compte.lignes(ligne - 1).L_date.Day & " " & Now.Month & " " & Now.Year) .L_credit = mon_compte.lignes(ligne - 1).L_credit .L_debit = mon_compte.lignes(ligne - 1).L_debit End With mon_compte.lignes.Add(new_ligne) MiseAjour() new_ligne = Nothing End If Next End Sub
*with sur newline? tu gagnerais en lisibilité en le mettant sur l'item en cours de lecture (boucle)
*tu détruis l'item en boucle (bien), mais dans ce cas ne le déclare pas dans la boucle : new dans la boucle mais déclaration avant, question de logique (même s'il n'y a pas d'erreur)
en fait j'ai l'impression que ne pas mettre le new à créér une copie de la ligne, mais avc des Byref
'dans Cls_Compte Public Sub echeancier() '<- que tu appelles depuis la form, après le load réussi 'récupére le nombre de ligne initiale (avant mise à jour mensuel) 'attention au code de pcpt c'est for i = 1 to count, puis i-1 'marche pareil que si count-1 et pas de -1 à chaque i, en fin ligne ^^ ' mais bon je lui fait confiance ^^ Dim Count_ligne As Integer = mon_compte.lignes.Count Dim new_ligne As CLS_lignes ' recherche les mise à jour à faire (échéancier) For ligne As Integer = 1 To Count_ligne With mon_compte.lignes(ligne - 1) ' si c'est une ligne échéancier et que la date correspond au début du mois ' et que ce mois n'est pas déja rempli (ou alors si c'est une nouvelle année) alors If .IsMonthlyable(DateTime.Now) Then ' retire à l'anciénne ligne le status de mensuel .L_mensuel = False ' ajouter cette nouvelle ligne ! new_ligne New CLS_lignes 'pas besoin du new car le instancie new_ligne (merci pcpt) 'sauf que là ben je doit faire comme ça pour que cela marche ???? 'CLONE new_ligne = .Clone new_ligne.L_ID = NOUVEL_ID 'du type que tu veux... IMPORTANT !! new_ligne.L_mensuel = True new_ligne.L_pointage False 'ou .L_pointage pour garder l'ancien ?? .L_date = CDate(.L_date.Day & " " & Now.Month & " " & Now.Year) Me.lignes.Add(new_ligne) new_ligne = Nothing End If End With Next End Sub 'dans Cls_Lignes Public Function IsMonthlyable(ByVal dDate As DateTime) As Boolean 'vérifier le nom de la fonction, pas certain que "Monthlyable" se dise... Return (dDate.Day >= 1 AndAlso _mensuel _ AndAlso (dDate.Month > _date.Month _ Or dDate.Year > _date.Year)) End Function 'dans Cls_Lignes Public Function Clone() As CLS_lignes Return New CLS_lignes with {.L_id _id, .L_date _date, .L_credit = _credit, ETC, TOUTES LES PROPRIETES} End Function
Sub échéancier() 'récupére le nombre de ligne initiale (avant mise à jour mensuel) Dim NB_ligne As Integer = mon_compte.lignes.Count '- 1 ' défini une nouvelle ligne Dim new_ligne As CLS_lignes ' recherche les mise à jour à faire (échéancier) For ligne As Integer = 1 To NB_ligne With mon_compte.lignes(ligne - 1) ' si c'est une ligne échéancier ' et que ce mois n'est pas déja rempli (ou alors si c'est une nouvelle année) alors If .L_mensuel AndAlso (Now.Month > .L_date.Month _ Or Now.Year > .L_date.Year) Then ' retire à l'anciénne ligne le status de mensuel .L_mensuel = False ' ajouter cette nouvelle ligne ! new_ligne = New CLS_lignes 'instancie new_ligne With (new_ligne) .L_mensuel = True .L_pointage = False .L_budget = mon_compte.lignes(ligne - 1).L_budget .L_type = mon_compte.lignes(ligne - 1).L_type .L_commentaire = mon_compte.lignes(ligne - 1).L_commentaire .L_date = CDate(mon_compte.lignes(ligne - 1).L_date.Day & " " & Now.Month & " " & Now.Year) .L_credit = mon_compte.lignes(ligne - 1).L_credit .L_debit = mon_compte.lignes(ligne - 1).L_debit End With mon_compte.lignes.Add(new_ligne) new_ligne = Nothing 'détruit new_ligne End If End With Next End Sub