Blocage sur un code pour un flexgrid

Résolu
miloudeemilie Messages postés 6 Date d'inscription mardi 11 juillet 2006 Statut Membre Dernière intervention 15 décembre 2006 - 13 déc. 2006 à 12:38
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 - 13 déc. 2006 à 20:34
bonjour, voilà j'ai créé une interface avec un flexgrid
l'interface comporte le nom et le prénom d'une personne sélectionnée
le flexgrid comporte les colonnes suivantes :
colonne1 = date
colonne2=numéro du projet (colonne cachée)
colonne3=nom du projet dans une liste déroulante qui est gérée par une table access
colonne4=commentaires
colonne5=avancement(choix dans une liste déroulante)

j'arrive à renseigner le flexgrid. j'ai également créer un bouton ajouter une ligne qui fonctionne correctement mais j'ai un soucis avec mon bouton valider. je voudrais qu'il enregistrer toutes les données saisies dans le flexgrid dans une table access et qu'il ferme l'interface. mais il me bloque sur le code suivant :

Private Sub cmd_valider_Click()


'met à jour la base de données
    Call SauvegardeProjetsProf
   
'décharge la feuille
    Unload Me
   
End Sub

Private Sub SauvegardeProjetsProf()


     For i = 1 To flx_projets_prof.Rows - 1
   
        If (flx_projets_prof.TextMatrix(i, 0) = "") Then
            SQL = "INSERT INTO Tbl_historique_projets_sociaux_professionnels (num_personne,date,num_projets_sociaux_professionnels,commentaires,avancement) " & _
            "VALUES (" & num_personne_frm & "," & LectureTexteDate(flx_projets_prof.TextMatrix(i, 1)) & "," & "," & _
            LectureNombre(flx_projets_prof.TextMatrix(i, 2)) & "," & LectureTexte(flx_projets_prof.TextMatrix(i, 4)) & LectureComboListe(flx_projets_prof.TextMatrix(i, 5)) & ")"
            'MsgBox (SQL)
            Base.Execute (SQL)
        Else
            SQL = "UPDATE Tbl_historique_projets_sociaux_professionnels SET " & _
            "date=" & LectureTexteDate(flx_projets_prof.TextMatrix(i, 1)) & _
            ",num_projets_sociaux_professionnels=" & LectureNombre(flx_projets_prof.TextMatrix(i, 2)) & _
            ",commentaires=" & LectureTexte(flx_projets_prof.TextMatrix(i, 4)) & _
            ",avancement=""" & LectureComboListe(flx_projets_prof.TextMatrix(i, 5)) & _
            " WHERE num=" & flx_projets_prof.TextMatrix(i, 0)
            'MsgBox (SQL)
            Base.Execute (SQL)
        End If
       
    Next i
   
End Sub

il bloque sur SauvegardeProjetsProf en indiquant : "Erreur de Compilation : Procédure Sub ou Function non définie"

merci pour votre aide

emilie

3 réponses

TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
13 déc. 2006 à 13:38
Il est tombé sur un nom non défini. Pas étonnant quand on voit que tu ne déclares pas explicitement tes variables (i, SQL...).
D'autre part on ne sait pas si tu as déclaré tes fonction LectureTexte() LectureComboliste etc...
Stocke les résultat de tes fonctions  (pour la requete sql) dans des variables intermediaires ce qui te permettra d'en controler la validité avant d'executer n'importe quoi dans ta base :

datetemp=LectureTexteDate(flx_projets_prof.TextMatrix(i, 1))
projettemp=LectureNombre(flx_projets_prof.TextMatrix(i, 2))
commenttemp=LectureTexte(flx_projets_prof.TextMatrix(i, 4))
avancementtemp=LectureComboListe(flx_projets_prof.TextMatrix(i, 5))
numselecttemp=flx_projets_prof.TextMatrix(i, 0)

ExecuteMiseAJour(datetemp,projettemp,commenttemp,avancementtemp,numselecttemp)
...
end sub

sub ExecuteMiseAJour(ladate as string, leprojet as string,lecomment as string,avancement as string,numselect as string)
dim SQL as string
on error goto bug
SQL = "UPDATE Tbl_historique_projets_sociaux_professionnels SET " & _
            "date=" & ladate & _
            ",num_projets_sociaux_professionnels=" & leprojet & _
            ",commentaires=" & lecomment & _
            ",avancement=""" & avancement & _
            " WHERE num=" & numselecttemp

            Base.Execute (SQL)

goto fin
bug:
msgbox("La mise à jour s'est mal passée !")
fin:

end sub

Jcbé[^]
3
miloudeemilie Messages postés 6 Date d'inscription mardi 11 juillet 2006 Statut Membre Dernière intervention 15 décembre 2006 1
13 déc. 2006 à 15:46
j'ai déclaré les fonctions LectureTexte ... dans un module

Public Function LectureTextDate(txt_date As Control) As Variant
 
    If (txt_date = "__/__/____") Then
        LectureTextDate = "Null"
    Else
        LectureTextDate = """" & txt_date & """"
    End If


End Function
Public Function LectureTextHeure(txt_heure As String) As Variant
 
    If (txt_heure = "__:__") Then
        LectureTextHeure = "Null"
    Else
        LectureTextHeure = """" & txt_heure & """"
    End If


End Function
Public Function LectureComboBox(cmb As Control) As Variant
'Renvoi le num de la colonne 0
    If (cmb.ListIndex = -1) Then
        LectureComboBox = "Null"
    Else
        LectureComboBox = cmb.Column(0, cmb.ListIndex)
    End If


End Function
Public Function LectureComboBoxListe(cmb As Control) As Variant
'Renvoi le texte du combo
    If (cmb.Text = "") Then
        LectureComboBoxListe = "Null"
    Else
        LectureComboBoxListe = """" & cmb.Text & """"
    End If


End Function
Public Function LectureTextBoxNumber(txt As Control) As Variant


    If (txt.Text = "") Then
        LectureTextBoxNumber = "Null"
    Else
        LectureTextBoxNumber = txt.Text
    End If


End Function
Public Function LectureNombre(txt As String) As Variant


    If (txt = "") Then
        LectureNombre = "Null"
    Else
        LectureNombre = txt
    End If


End Function
Public Function LectureTexte(txt As String) As Variant


    If (txt = "") Then
        LectureTexte = "Null"
    Else
        LectureTexte = """" & txt & """"
    End If


End Function

miloude
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
13 déc. 2006 à 20:34
Tout cela me paraît un peu compliqué pour pas grand chose.


En fait, je devine que t'est heurté avec la valeur null dans certains champs de ta base et comme tu as eu de méchantes erreurs lorsque tu as voulu les affecter à des variables string tu t'es dit que tu allais faire des fonction spécifiques  qui renvoient des variants !


 






Jcbé[^]
0
Rejoignez-nous