Affichage des informations d'une société

ngalino Messages postés 65 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 15 octobre 2009 - 25 juin 2008 à 09:30
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 25 juin 2008 à 13:02
Bonjour à tous,
je développe avec vb; à cet effet, j'ai un formulaire qui doit afficher les informations nécessaires pour une société. j'aimerais qu'à chaque fois que ce formulaire est chargé, il affiche lee données s'il ont été saisie au préalable; dans le cas contraire qu'il soit à mesure de faire une mise à jour.
par ailleurs, voici le code que j'ai saisie mais qui ne me donne pas toujours satisfaction:

Private Sub CmdValider_Click()
'
On Error GoTo err_Valider
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
   If Valider = False Then
      chsql = "insert into societe (Code_societe,Raison_sociale,Matricule_juridique,Num_scife,Code_imposition,Regime_CNPS,Adresse,Boite_postale,Localite,Pays,Telephone,Mail,Web) values('" & txtCode.Text & "','" & txtRSociale.Text & "','" & txtMatJuridique.Text & "','" & txtScife.Text & "','" & txtCodeImp.Text & "','" & txtCNPS.Text & "','" & txtAdresse.Text & "','" & txtBP.Text & "','" & txtLocalite.Text & "','" & txtPays.Text & "','" & txtTel.Text & "','" & txtMail.Text & "','" & txtWeb.Text & " ')"
   Else
      chsql = "update societe set  Raison_sociale='" & txtRSociale.Text & "', Matricule_juridique='" & txtMatJuridique.Text & "', Num_scife='" & txtScife.Text & "',Code_imposition='" & txtCodeImp.Text & "',regime_CNPS='" & txtCNPS.Text & "',Adresse='" & txtAdresse.Text & "',Boite_postale='" & txtBP.Text & "',Localite='" & txtLocalite.Text & "',Pays='" & txtPays.Text & "',Telephone='" & txtTel.Text & "',Mail='" & txtMail.Text & "',Web='" & txtWeb.Text & "' where Code_societe='" & txtCode.Text & "'"
   End If
'End If
cmd.ActiveConnection = ConnectionStringBDD
cmd.CommandText = chsql
cmd.Execute
'Set rs = Nothing
Valider = False
CmdValider.Enabled = False
  If rs.State = adStateOpen Then rs.Close
     rs.Open "societe", ConnectionStringBDD, adOpenKeyset, adLockOptimistic, adCmdTable
     If Not rs.EOF Then
       rs.MoveFirst
       NomEntreprise = rs!Raison_sociale
       MatriculeJuridique = rs!Matricule_juridique
       NumeroScife = rs!Num_scife
       CodeImposition = rs!Code_imposition
       RegimeCnps = rs!Regime_CNPS
       AdresseEntreprise = rs!Adresse
       BoitePostale = "B.P" & rs!Boite_postale
       LocaliteSociete = rs!Localite
       PaysEntreprise = rst!Pays
       TelephoneEntreprise = rs!Telephone
       EmailEntreprise = rs!Mail
       WebEntreprise = rs!Web
     End If
      
Call Form_Load
Exit Sub
err_Valider: MsgBox Err.Description, 0, "Editeur"


   
End Sub


Private Sub Form_Load()
Dim rst As New ADODB.Recordset
rst.Open "societe", ConnectionStringBDD, adOpenKeyset, adLockOptimistic, adCmdTable
If Not (rst.EOF And rst.BOF) Then
   Valider = True
   rst.MoveFirst
   txtCode = rst.Fields(0)
   txtRSociale = rst.Fields(1)
   txtMatJuridique = rst.Fields(2)
   txtScife = rst.Fields(3)
   txtCodeImp = rst.Fields(4)
   txtCNPS = rst.Fields(5)
   txtAdresse = rst.Fields(6)
   txtBP = rst.Fields(7)
   txtLocalite = rst.Fields(8)
   txtPays = rst.Fields(9)
   txtTel = rst.Fields(10)
   txtMail = rst.Fields(11)
   txtWeb = rst.Fields(12)
End If
rst.Close
Me.Refresh
End Sub

merci de le consulter afin de voir ce qu'il faudrait faire svp.
NB: toutes les variables sont déclarées d'avance.

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juin 2008 à 13:02
Salut
Rien compris à ton problème
"j'aimerais qu'à chaque fois que ce formulaire est chargé, il affiche lee données s'il ont été saisie au préalable"
   C'est sur, on va pas afficher des données qui n'existent pas
"dans le cas contraire qu'il soit à mesure de faire une mise à jour"
   Un mise à jour de quoi ?

Tu parles de formulaire (et pas de forme) : Tu es vraiment sous VB6 ? ou bien dans le VBA de Access ?
Dans CmdValider_Click, tu fais un Insert ou un Update, puis tu recharges toutes les fiches dans un RecordSet
Ensuite, je ne sais pas pourquoi (tu vas nous le dire), tu testes "rs.EOF" : Quel intérêt ?
En chargeant un RecordSet, tu es toujours sur la 1ère fiche, donc le MoveFirst peut^être effectué sans test préalable.

Ensuite, toujours dans cette même Sub, tu relances le Form_Load avec le Call:
- A éviter : Form_Load est un évènement, ce n'est pas une Sub comme les autres
Si tu as du code à exécuter, mets le dans une Sub personnelle et appelle cette Sub
- Ensuite, tu refais une lecture de toutes les fiches : Tu viens de le faire !
Quel intérêt ?
A mon avis, il y a des lignes en trop.

Dans tous les cas, tu réaffiches toujours la première fiche de la database.
Alors que ce code ne te donne pas satisfaction, c'est une chose, mais va falloir expliquer ce que tu voudrais faire. Ce n'est pas assez clair.

Conseil pour le code des syntaxxe SQL :
En général, les requètes SQL sont longues.
Pour être plus faciles à lire, je te recommande d'utiliser le symbole _ en fin de ligne pour couper une syntaxe VB.
Seul limitation : une vingtaine de _ par ligne de code. Il faut donc terminer la syntaxe de temps en temps.
Exemple :
chsql = "insert into societe " & _
        "  ( Code_societe, " & _
        "    Raison_sociale, " & _
        "    Matricule_juridique, " & _
        "    Num_scife, " & _
        "    Code_imposition, " & _
        "    Regime_CNPS, " & _
        "    Adresse, " & _
        "    Boite_postale, " & _
        "    Localite, " & _
        "    Pays, " & _
        "    Telephone, " & _
        "    Mail, " & _
        "    Web ) "
chsql = chsql & _
        "values('" & txtCode.Text & "','" & _
                     txtRSociale.Text & "','" & _
                     txtMatJuridique.Text & "','" & _
                     txtScife.Text & "','" &  _
                     txtCodeImp.Text & "','" &  _
                     txtCNPS.Text & "','" &  _
                     txtAdresse.Text & "','" &  _
                     txtBP.Text & "','" &  _
                     txtLocalite.Text & "','" &  _
                     txtPays.Text & "','" &  _
                     txtTel.Text & "','" &  _
                     txtMail.Text & "','" &  _
                     txtWeb.Text & " ')"   <---- Ici, un espace en trop avant le '

C'est quand même plus facile à relire, non ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous