IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

attribuer une champ vide dans une table (date, ou checkBox).


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut attribuer une champ vide dans une table (date, ou checkBox).
    bonjour.

    j'ai un souci.

    quand je veux enregistrer une entrée sur un table contenant un champ de type date, si il est vide, je lui donne comme pour un string : "".

    mais access me fait une erreur de type missmatch...

    que faire?
    faut-il lui donné : "00.00.0000" ou autre?
    merci d'avances, a bientot, salutation

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2003
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Essaye de lui attribuer Null
    Ca vas fonctionner.

    A+,
    MasterSleepy.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    ok.
    je lui attribue Null comment :
    - Date = Null
    - Date = "Null"

    merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    si je met date = "Null" il me sort une erreur Mismatch
    si je met date = Null, il me sort : invalid use of Null


  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    C'est peut-être c*** ce que je vais dire, mais si tu ne rajoutais tout simplement rien.

    Starec

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    merci, effectivement, il suffit de ne rien mettre

    merci.

    Par contre, j'ai au autre souci.
    pour attribuer la valeur d'un checkBox dans la table?
    j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          !COLLOCATION = (ChkFCustomerEditDetailCollo)
    et ça me fait un erreur uniquement si il est vide

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    j'ai trouvé.

    suffit de dire que :
    si le checkBox est vide, alors on mémorise un false
    si il y a qqch dedans, alors on mémorise un true

    un grand merci

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    malheuresement, il y a encore un bug a l'enregistrement!

    tout se passe bien, si le champ qui contient la date était vide, et que j'y rajoute une entrée (vide ou non)

    par contre, si le champ n'est pas vide et que je veux lui attribuer une date vide, alors la j'ai une erreur de type "missmatch"

    je comprend pas tout la...
    il faut donc certainement que je fasse une fonction qui teste si il est vide et que si c'est le cas, je lui attribue une date vide, mais je ne sais tjr pas comment lui attribuer ça, puisque le "Null" ou le Null ne passe pas a l'attribution!

    merci

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2003
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Peux-tu nous donner la description de la table, version d'Access.
    Car affecter Null dans un champs ne me pose pas de problème, sous Access 2003, sur une table de teste.

    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim b As DAO.Recordset
     
    Set b = CurrentDb.OpenRecordset("select * from Table1 where text=""toto""")
     
    b.Edit
    b.Fields("test") = Null
    b.Update
    b.Close
    A+,
    MasterSleepy.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    voila ma table :


    merci de t'occuper de mon problème

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2003
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    Tu es sous quelle version d'Access?
    Donnes nous aussi une partie de ton code qui fait la mise à jour se sera plus simple.

    A+,
    MasterSleepy.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Hello.
    Visual Basic 6.3 et Access 2003 Sp3

    quand au code, voici la fonction qui enregistre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Function saveData() As Boolean
     
      Dim orsSaveData     As ADODB.Recordset
      Dim strsqlSaveData  As String
     
      On Error GoTo saveData_Error
     
      'on part du principe que tout c'est bien déroulé
      saveData = True
     
      strsqlSaveData = "select * from TableCustomer "
     
      Set orsSaveData = New ADODB.Recordset
     
      With orsSaveData
        .Open strsqlSaveData, CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdText
        If m_intBoutonPressed = enu_BtnPressed_Ajout Then .AddNew
          !ID_SAP_FL = (TxtFCustomerEditDetailSapFl)
          !STATUS = NullToEmptyString(TxtFCustomerEditDetailStatus)
          !CONTACT = NullToEmptyString(TxtFCustomerEditDetailContact)
          !Tel = NullToEmptyString(TxtFCustomerEditDetailTel)
          !FAX = NullToEmptyString(TxtFCustomerEditDetailFax)
          !IN_SERVICE_DATE = TxtFCustomerEditDetailInSDate
          !OUT_OF_SERVICE_DATE = TxtFCustomerEditDetailOoSDate
          !CONTRACT = NullToEmptyString(TxtFCustomerEditDetailContract)
          !CONTRACT_START = TxtFCustomerEditDetailContractStart
          !CONTRACT_END = TxtFCustomerEditDetailcontractEnd
          !COLLOCATION = NullToEmptyCheckBox(ChkFCustomerEditDetailCollo)
          !COLLO_TEXT = NullToEmptyString(TxtFCustomerEditDetailColloT)
          !TERRESTRIAL = NullToEmptyCheckBox(ChkFCustomerEditDetailTerre)
          !IP_BACKBONE = NullToEmptyCheckBox(ChkFCustomerEditDetailBackbone)
          !OUR_SPACE = NullToEmptyCheckBox(ChkFCustomerEditDetailOurSpace)
          !COMPANY = NullToEmptyString(TxtFCustomerEditDetailCompany)
          !MR = TxtFCustomerEditDetailMR
          !CURRENCY = NullToEmptyString(TxtFCustomerEditDetailCurrency)
          .Update
        .Close
      End With
      Set orsSaveData = Nothing
     
      Exit Function 'oRs
     
    saveData_Error:
      'le sauvetage c'est mal déroulée
      saveData = False
     
      MsgBox Replace(g_cstrErrMesg, "@", "saveData") & vbCrLf & Err.Description, _
             vbCritical, "Erreur dans la fenêtre F_CustomerEditDetails"
     
    End Function 'saveData
    la fonction NullToEmptyString:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function NullToEmptyString(varValueA As Variant) As String
     
      If IsNull(varValueA) Then NullToEmptyString = "" Else _
                                NullToEmptyString = varValueA
     
    End Function 'NullToEmptyString
    et la fonction NullToEmptyCheckBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function NullToEmptyCheckBox(varValueA As Variant) As String
     
      If IsNull(varValueA) Then NullToEmptyCheckBox = False Else _
                                NullToEmptyCheckBox = True
     
    End Function 'NullToEmptyString
    merci

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2003
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Essaye un peu code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Function saveData() As Boolean
     
      Dim orsSaveData     As ADODB.Recordset
      Dim strsqlSaveData  As String
     
      On Error GoTo saveData_Error
     
      'on part du principe que tout c'est bien déroulé
      saveData = True
     
      strsqlSaveData = "select * from TableCustomer "
     
      Set orsSaveData = New ADODB.Recordset
     
      With orsSaveData
        .Open strsqlSaveData, CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdText
        If m_intBoutonPressed = enu_BtnPressed_Ajout Then .AddNew
          !ID_SAP_FL = (TxtFCustomerEditDetailSapFl)
          !STATUS = NullToEmptyString(TxtFCustomerEditDetailStatus)
          !CONTACT = NullToEmptyString(TxtFCustomerEditDetailContact)
          !Tel = NullToEmptyString(TxtFCustomerEditDetailTel)
          !FAX = NullToEmptyString(TxtFCustomerEditDetailFax)
          !IN_SERVICE_DATE = iif(isnull(TxtFCustomerEditDetailInSDate),Null,TxtFCustomerEditDetailInSDate)
          !OUT_OF_SERVICE_DATE = iif(isnull(TxtFCustomerEditDetailOoSDate),Null,TxtFCustomerEditDetailOoSDate) 
          !CONTRACT = NullToEmptyString(TxtFCustomerEditDetailContract)
          !CONTRACT_START = iif(isnull(TxtFCustomerEditDetailContractStart),Null,TxtFCustomerEditDetailContractStart) 
          !CONTRACT_END = iif(isnull(TxtFCustomerEditDetailcontractEnd),Null,TxtFCustomerEditDetailcontractEnd) 
          !COLLOCATION = NullToEmptyCheckBox(ChkFCustomerEditDetailCollo)
          !COLLO_TEXT = NullToEmptyString(TxtFCustomerEditDetailColloT)
          !TERRESTRIAL = NullToEmptyCheckBox(ChkFCustomerEditDetailTerre)
          !IP_BACKBONE = NullToEmptyCheckBox(ChkFCustomerEditDetailBackbone)
          !OUR_SPACE = NullToEmptyCheckBox(ChkFCustomerEditDetailOurSpace)
          !COMPANY = NullToEmptyString(TxtFCustomerEditDetailCompany)
          !MR = TxtFCustomerEditDetailMR
          !CURRENCY = NullToEmptyString(TxtFCustomerEditDetailCurrency)
          .Update
        .Close
      End With
      Set orsSaveData = Nothing
     
      Exit Function 'oRs
     
    saveData_Error:
      'le sauvetage c'est mal déroulée
      saveData = False
     
      MsgBox Replace(g_cstrErrMesg, "@", "saveData") & vbCrLf & Err.Description, _
             vbCritical, "Erreur dans la fenêtre F_CustomerEditDetails"
     
    End Function 'saveData
    J'ai remplacé les lignes qui vont initialisé les valeurs des champs de types date
    par
    !CHAMPS = iif(isnull(ChampsText),Null,ChampsText)
    Il y a des chances pour que le message d'erreur que tu aies eu, provienne de la lecture du champs text.

    A+,
    MasterSleepy.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    merci, mais c'est pas ça , ça change rien

    même joueur rejoue encore

    franchement, la je suis perdu..comprend pas...
    au pire, je le force a l'enregistrement, mais ça va foutre le bousin, parsqu'ils ont pas tjr toutes les dates
    merci quand meme, a plus!

Discussions similaires

  1. [AC-2010] Somme de champs vides dans une table
    Par jlv25 dans le forum Modélisation
    Réponses: 2
    Dernier message: 14/07/2011, 12h53
  2. Réponses: 16
    Dernier message: 21/08/2008, 13h58
  3. Insérer des champs vides dans une requête sql
    Par js8bleu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/02/2008, 15h00
  4. Réponses: 6
    Dernier message: 23/01/2007, 10h17
  5. Test evenement sur champ vide dans une table
    Par eddyG dans le forum Access
    Réponses: 3
    Dernier message: 30/05/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo