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 :

Insertion Automatise Bis


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut Insertion Automatise Bis
    J'ai adapté le code que Mahefasoa m'a donné mais a l'éxécution de celui-ci il me donne l'erreur d'éxécution (Access 2003) 3346 : Le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination). Or je ne trouve pas de différence. Merci de votre aide.


    Voici le code :
    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
    Public Sub AJOUTECHEANCIER(RefOpe As Integer)
      Dim db As DAO.Database, tblA As DAO.Recordset
      Dim xDate As Date, NewDate As Date, NbTour As Long, MtD As Currency, MtE As Currency, Cpte As Integer, x As Long, RP As Integer, refe As String, Rgt As Integer
      Set db = CurrentDb
      Set tblA = db.OpenRecordset("SELECT * FROM SELECTION_OPERATIONS_POUR_ECHEANCIER WHERE REFOPERATION=" & RefOpe & ";", dbOpenDynaset, dbSeeChanges)
     
      With tblA
        If .RecordCount <> 0 Then
          .MoveFirst
          Do While Not .EOF
            xDate = .Fields(1)
            refe = .Fields(2)
            MtE = (.Fields(3) / .Fields(7))
            MtD = (.Fields(4) / .Fields(7))
            RP = .Fields(5)
            Cpte = .Fields(6)
            NbTour = .Fields(7)
            Rgt = .Fields(8)
            For x = 0 To NbTour - 1
            NewDate = DateAdd("m", x, xDate)
     
            DoCmd.RunSQL "INSERT INTO ECHEANCES (DATEECHEANCE, DATEECHEANCEVALEUR, REFMODEREGLEMENT,  ENCAISSEMENT, DECAISSEMENT, RAPPROCHE, REALISATION, PREVISION, REFOPERATION, REFCOMPTE, REFPERIODE, REFERENCE) VALUES (#" & Format(NewDate, "mm/dd/yyyy") & "#, #" & Format(NewDate, "mm/dd/yyyy") & "#, " & Rgt & ", " & MtE & ", " & MtD & ", 0, 1, 1, " & RefOpe & " , " & Cpte & ", " & RP & ", " & refe & ");"
            Next
            .MoveNext
            DoEvents
          Loop
        End If
        .Close
      End With
      Set tblA = Nothing
      Set db = Nothing
    End Sub
     
    Private Sub btAJOUT_ECHEANCIER_Click()
    DoCmd.SetWarnings False
    Call AJOUTECHEANCIER(Nz(Forms!OPERATION!REFOPERATION, 0))
    DoCmd.RunCommand acCmdRefresh
    End Sub

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

    Es-tu sûr qu'il ne te manque pas un champ dans ton Insert ?

    Starec

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Oui, j'en suis sûr.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    xDate = .FIELDS(1)
    Le premier field commence à 0 et non à 1

    cordialement,

    philippe

  5. #5
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Je suis d'accord mais le premier champ de ma requête .field(0) correspond à REFOPERATION.

  6. #6
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    je te suggère d'afficher ta requête avant de l'exécuter afin de pouvoir localiser plus facilement la source de l'erreur.

    A l'aide d'un Debug.Print par exemple (juste avant le DoCmd.RunSQL) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.Print "INSERT INTO ECHEANCES (DATEECHEANCE, DATEECHEANCEVALEUR, REFMODEREGLEMENT,  ENCAISSEMENT, DECAISSEMENT, RAPPROCHE, REALISATION, PREVISION, REFOPERATION, REFCOMPTE, REFPERIODE, REFERENCE) VALUES (#" & Format(NewDate, "mm/dd/yyyy") & "#, #" & Format(NewDate, "mm/dd/yyyy") & "#, " & Rgt & ", " & MtE & ", " & MtD & ", 0, 1, 1, " & RefOpe & " , " & Cpte & ", " & RP & ", " & refe & ");"

Discussions similaires

  1. [MySQL] Insertion automatiser dans un formulaire
    Par alas70 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/05/2009, 17h51
  2. Requete insertion automatisée
    Par Baldric de Dol dans le forum SGBD
    Réponses: 3
    Dernier message: 14/05/2008, 10h33
  3. Insertion Automatise Dans Une Table
    Par dimitrak dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 17/07/2007, 20h53
  4. Insertion automatisée: write? print?
    Par vigon dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 18/10/2006, 16h24
  5. automatiser l'insertion de données dans une bd
    Par matterazzo dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/10/2005, 01h06

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