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

Requêtes et SQL. Discussion :

Mise à Jour d'une base de données


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 209
    Points : 103
    Points
    103
    Par défaut Mise à Jour d'une base de données
    Bnojour

    je voudrais mettre à jour ma base de données en mettons un 0 à chaque emplacement vide

    l'idée c'est ça :

    j'ai une clé primaire qui va de 1 à 3754
    je parcours ma table si je trouve un emplacement = ""
    je met un 0 à la place
    sinon je passe au next

    est ce que vous pouvez m'aider à traduire ça en VBA

    Merci
    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 351
    Points
    34 351
    Par défaut
    On te modifie toute ta base à ta place dis moi

    tu adaptes cette requête à ton cas, et pour le VBA, même méthodologie que dans ton thread précédent.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE [MaTable] SET [Monchamp]=0 WHERE LEN([MonChamp])=0;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 209
    Points : 103
    Points
    103
    Par défaut
    Merci

    et dsl jp le Sql j'y connais presque rien et ma base est beaucoup trop grande pour que je le fasse en manuelle (3750lignes et 76colonnes)

    Pour le code ça devient ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim RS As DAO.Recordset
       Dim StrSQL As String
       Dim i As Integer
             StrSQL = "SELECT * FROM Matable"
             Set RS = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset, DbSeeChange)
             Do Until RS.EOF
                For i = 0 To RS.Fields.Count - 1
                RS.Edit
                RS.Fields(i) = MiseJour(RS.Fields(i))
                RS.Update
                Next i
                RS.MoveNext
             Loop
    et ma fonction MiseJour aura comme code ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function MiseJour(tempo As String) As String
       Dim tempo1 As String
       tempo1 = tempo
       'on test si c'est null 
       if tempo1 = "" then
          tempo1 = 0
       end if
    End Function
    c'est ça stp Jp

    Merci d'avance moi je continue à tester

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 351
    Points
    34 351
    Par défaut
    avec ce code, tu remplaces toutes les valeurs vides par 0, c'est ce que tu cherches à faire, n'est-ce pas ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 209
    Points : 103
    Points
    103
    Par défaut
    oui mais une fois que je fini mon premier passage dans ma function MiseJour
    sa me genere une erreur comme quoi le champ ne peut pas etre mis à jour

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 351
    Points
    34 351
    Par défaut
    en l'occurence, il faut que tu retournes une valeur en sortie de MiseJour, de type string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function MiseJour(tempo As String) As String
       Dim tempo1 As String
       tempo1 = tempo
       'on test si c'est null 
       if tempo1 = "" then
          tempo1 = "0"
       end if
    MiseJour = tempo1
    End Function

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 209
    Points : 103
    Points
    103
    Par défaut
    mdrrr

    on sait tous trompé mais sa arrive

    puisque mes champs sont Null, on passera jamai dans la fonction MiseJour qui prend comme entrée un string


    J'ai modfié le code de la façon suivante :

    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
    Sub miseajour()
       'Dim tempoTable As DAO.TableDef
       Dim RS As DAO.Recordset
       Dim StrSQL As String
       Dim i As Integer
       'For Each tempoTable In CurrentDb.TableDefs
        '  If InStr(tempoTable.Name, "Msys") = 0 Then
             StrSQL = "SELECT [Pièces Bonnes] FROM AAAA"                  '[" & tempoTable.Name & "]
             Set RS = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset, DbSeeChange)
             Do Until RS.EOF
                For i = 0 To RS.Fields.Count - 1
                RS.Edit
                If IsNull(RS.Fields(i)) Then
                   RS.Fields(i) = MiseJour()
                End If 'SuppressionCaracteresSpeciaux(RS.Fields(i))
                RS.Update
                Next i
                RS.MoveNext
             Loop
          'End If
       'Next
    End Sub
    et la fonction MiseJour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function MiseJour() As String
          Dim tempo1 As String
          tempo1 = "0"
          MiseJour = tempo1
    End Function
    ça marche nikel

    Merci à toi Jp tu es un AS

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Miseà Jour d'une base de données
    Par Kalvin_20 dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/05/2008, 13h25
  2. Mise à jour d'une base de données
    Par JeanMarc_T2k dans le forum Services
    Réponses: 1
    Dernier message: 01/02/2008, 22h48
  3. Réponses: 7
    Dernier message: 13/08/2007, 13h15
  4. probleme de virgule dans la mise à jour d'une base de donnée
    Par KAF dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 24/12/2005, 02h18
  5. mise à jour d'une base de données
    Par flo83 dans le forum ASP
    Réponses: 6
    Dernier message: 12/06/2005, 20h27

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