Vérification de champs libres ACCESS / VBA

erwan51 Messages postés 634 Statut Contributeur -  
blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

Soit une base de 600 enregistrements avec numéro, nom, prénom et photo.

J'aimerai sous Access 2000 à l'ouverture d'un formulaire rechercher tous les enregistrements dont le champ prénom est vide.

Comment faire ceci en VBA?

Pensez vous que cela soit lourd en terme de temps à chaque ouverture du formulaire ?

D'avance merci
Erwan51

1 réponse

  1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    tu crées un recordset sur ta table dont le source est une requête select * from table where prenom = ''

    Ca peut être lourd... à l'ouverture, mais pas trop, si ton formulaire est ouvert au lancement de l'appli.

    C'est pour faire quoi ? car faire une requête sur les champs vides est une chose, mais que fait-on du résultat ?

    A+ Blux "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    0
    1. erwan51 Messages postés 634 Statut Contributeur 80
       
      Et si je veux faire une recherche sur les champs qui ne comprennent pas de photo (objet OLE) ??

      Merci
      0
    2. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      WHERE photo is null
      mais c'est du SQL pur... ;-)

      A+ Blux "Les cons, ça ose tout.
      C'est même à ça qu'on les reconnait"
      0
    3. erwan51 Messages postés 634 Statut Contributeur 80 > blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention  
       
      par contre je ne connais pas trop le principe des recordset
      il faut quelque chose de ce style la sous VBA ?

      MyQuery = "select * from table where Photographie is null"
      Set DataBaseBiometry = OpenDatabase(PATH, False, False, "")
      Set DataBaseTable = DataBaseBiometry.OpenRecordset(MyQuery)

      et ensuite il ne reste plus qu'a exploiter le contenu de DataBaseTable ??
      0
    4. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Tiens :


      Private Sub B_Cre_Version_Click()
      ' Création d'une version
      Dim Db As Database
      Dim Rs As Recordset
      Dim Num_produit As Integer
      Dim StrSql As String
      If IsNull(Prod_Liste_Prod.Column(0)) Then
      MsgBox "Saisissez un produit !!!", vbCritical
      GoTo Fin:
      End If
      If IsNull(Choix_Cre_Version.Value) Then
      MsgBox "Saisissez une version !!!", vbCritical
      GoTo Fin:
      End If
      Num_produit = Prod_Liste_Prod.Column(1)
      Set Db = CurrentDb
      ' On recherche si la version n'existe pas
      Set Rs = Db.OpenRecordset("Diffusion", dbOpenForwardOnly)
      With Rs
      Do While Not .EOF
      If Rs!Prod_Num = Num_produit And Rs!Prod_Vers = Choix_Cre_Version.Value Then
      MsgBox "La version existe déjà !!!", vbCritical
      GoTo Fin:
      End If
      .MoveNext
      Loop
      End With
      Rs.Close
      ' On crée la version
      Set Rs = Db.OpenRecordset("Diffusion", dbOpenDynaset)
      With Rs
      .AddNew
      !Prod_Num = Num_produit
      !Prod_Vers = Choix_Cre_Version.Value
      !Support = Choix_Cre_Support.Value
      .Update
      .Requery
      End With
      Prod_Liste_Prod_Change
      Choix_Cre_Version.Value = ""
      Choix_Cre_Support.Value = ""
      MsgBox "La version est créée..."
      Fin:
      Rs.Close
      End Sub


      C'est pour ajouter une ligne à la table "diffusion" à partir d'éléments choisis dans une liste déroulante.

      On teste qu'il y a bien des choix de fait, ensuite on balaye la table pour voir si ce qu'on veut ajouter n'existe pas, dans ce cas, on ajoute une ligne...

      Avec ce code tu devrais pouvoir (tout) faire moyennant adaptation...

      A+ Blux "Les cons, ça ose tout.
      C'est même à ça qu'on les reconnait"
      0
    5. erwan51 Messages postés 634 Statut Contributeur 80 > blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention  
       
      J'ai réussi ce que je voulais faire, merci Blux.

      Tiens au cas ou tu saches ca :
      Je sais que pour maximiser un formulaire il faut faire DoCmd.maximise
      mais si c'est la fenêtre access et non plus le formulaire la ca ne marche pas.

      Par exemple, ma base fait la moitié de l'écran et quand le user ouvre un formulaire j'aimerai que access prenne l'écran entier...

      Merci encore
      Erwan51
      0