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

Langage SQL Discussion :

[Access] INSERT complexe


Sujet :

Langage SQL

  1. #21
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Dans ce cas, on ne traite que les cas où Suite ne commence pas par la date de prospection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE [Fiches Clients]
    SET Suite = [Date Prospection] & Char(10) & Suite
    WHERE Suite NOT LIKE [Date Prospection] & "%"

  2. #22
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Vu le nombre d'erreurs de frappe (je suis en train d'halluciner ), je préfère corriger le tout à la main. J'ai du remplacer (avec rechercher / remplacer, mais quand même) les séparateurs dans suite, car le deuxième utilisateur avait mis des ; au lieu de virgules, et d'autres erreurs.
    Merci quand même

  3. #23
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Bonsoir,

    Après pas mal de retouches pour uniformiser le tout, il me reste encore un problème : le champ suites (mémo), lorsqu'il est splitté, envoie un résultat à virgule (je pense à cause des slashes) dans le champ de destination (lui aussi en mémo). Est-ce un soucis dans le code VB ?
    J'ai cherché différentes solutions, je ne vois pas. J'imagine que c'est un soucis de type de donnée ?

    Bonne soirée

  4. #24
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    euh... tu illustrerais par un exemple ?

  5. #25
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Il m'affiche en fait des nombres du style :

    -0,15
    -0,733
    -0,20

    Je ne sais pas de quoi cela vient, je pense d'un type de donnée non adapté, mais je cherche encore où.

    Voici la procédure VB actuelle :

    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
    Sub test()
    Dim Conn As ADODB.Connection
    Dim RS As New ADODB.Recordset
    Dim TabComm As Variant, TabVisites As Variant, i As Integer
    Dim NumOrdre As Integer, Visite As String, Comm As String
    Dim SQL As String
     
    Set Conn = CurrentProject.Connection
    RS.Open "SELECT [N° d'ordre], Commentaires, Suites FROM [Fiches Clients]", Conn, adOpenForwardOnly, adLockReadOnly
    While Not RS.EOF
        NumOrdre = RS("N° d'ordre").Value
        TabVisites = Split(RS("Suites").Value, ", ")
        TabComm = Split(RS("Commentaires").Value, vbLf)
     
        For i = LBound(TabVisites) To UBound(TabVisites)
            Visite = TabVisites(i) ' attention aux formats de date
            Comm = "'" & Replace(TabComm(i), "'", "''") & "'" 
            SQL = "INSERT INTO Visites ([N° d'ordre], DateVisite, CommVisite) "
            SQL = SQL & "VALUES (" & NumOrdre & ", " & Visite & ", " & Comm & ") "
            Conn.Execute SQL
        Next
        RS.MoveNext
    Wend
     
    End Sub

  6. #26
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Il m'affiche en fait des nombres du style :

    -0,15
    -0,733
    -0,20
    et il devrait te donner quoi ?

  7. #27
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Bah des dates ^^'

    Sous la forme 25/12/06, 01/01/07 toutes sous la même forme, provenant du champ suites(mémo) de la table fiches clients,

  8. #28
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    c'est normal. Si tu écris 25/12/06 tel quel dans une requête, cela veut dire 25 divisé par 12 divisé par 6, soit 0,347... D'où ma remarque précédente sur le format #mm/jj/aaaa# que tu dois obtenir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    Visite = DateSQL(TabVisites(i))
    ...
     
    Function DateSQL(DateTxt As String) As String
    Dim Tab as Variant
    Tab = Split(DateTxt, "/")
    DateSQL = "#" & Tab(1) & "/" & Tab(0) & "/" & Tab(2) & "#"
    End Function

  9. #29
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Bonjour,

    j'ai un ennui : j'ai corrigé les différentes erreurs sur ma base (il manquait parfois des visites, ou des dates), mais lors de la création des différentes fiches, il y a eu des plantages, et il manque dans la table [Fiches Clients] certains numéros d'ordre. Le soucis, c'est que, même en rajoutant les lignes manquantes en SQL, il bloque dessus, et en essayant le débogage, je m'aperçois qu'il ne reconnait toujours pas le N° d'ordre manquant (il me dit que la ligne du N° d'ordre vaut NULL).
    Auriez-vous la solution ?

  10. #30
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Bonjour,

    je bloque toujours sur le même problème, si quelqu'un avait une solution...

    Merci

  11. #31
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    C'est à toi de décider ce qu'il faut faire dans ce cas-là ! Si par exemple tu veux remplacer les numéros manquant par un zéro, cela te fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsNull(RS("N° d'ordre").Value) Then
      NumOrdre = 0
    Else
      NumOrdre = RS("N° d'ordre").Value
    End If

  12. #32
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Par défaut
    Bonsoir,

    Il plantait encore avec ce système. j'ai simplement rajouté dans ma requete : WHERE [N° d'ordre]>0, du coup, ça a fonctionné.

    Merci à vous deux pour votre aide,
    bonne soirée

  13. #33
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    dans ce cas, utilise plutôt [N° d'ordre] IS NOT NULL, c'est plus explicite.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. PB requete access : insertion de données et somme
    Par pierrickbe dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/07/2008, 14h18
  2. ACCESS Insert et select
    Par Spanish_ dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/01/2008, 16h00
  3. [ODBC] [Access] Insertion avec NumeroAuto
    Par Aillyzeux dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/08/2007, 11h25
  4. [ACCESS] Insert - Select
    Par diaboloche dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/02/2007, 16h30
  5. [vb][access] Insert
    Par Alex35 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/12/2005, 11h41

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