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

Bases de données Delphi Discussion :

Insertion sous Access avec Compos ADO


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Insertion sous Access avec Compos ADO
    Salut à tous.
    Je dois realiser une appli d'analyse/Statistique qui se connecte sous SQL Server ou en local avec une base Access.
    J'ai du implementer un module de synchro SQL Server/Access avec les compos ADO.
    Or, j'ai un message d'erreur :
    Type de donnée incompatible dans l'expression du critère
    des que je tente d'inserer des données dans la table Access avec les compos ADOTable, ADoQuery.
    J'ai déjà parcouru ce forum pour rechercher des pistes, mais aucun n'a pas résolu mon problème.

    Merci
    On progresse .....

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pourrais tu montrer le code et/ou la requete que tu utilises pour faire l'insertion des données ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Je m'excuse, j'aurais du le poster avant.

    Le voici avec un ADoQuery.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Qry_insert.Parameters.ParamByName('DATE_DOC').Value   := DM.Qry_CA.FieldByName('DATE_DOC').AsDateTime;
            Qry_insert.Parameters.ParamByName('DATE_DOC').Value   := DM.Qry_CA.FieldByName('DATE_DOC').AsString;
            Qry_insert.Parameters.ParamByName('ANNEE').Value   := DM.Qry_CA.FieldByName('ANNEE').AsInteger;
            Qry_insert.Parameters.ParamByName('MOIS').Value   := DM.Qry_CA.FieldByName('MOIS').AsInteger;
            Qry_insert.Parameters.ParamByName('FAMILLE').Value   := DM.Qry_CA.FieldByName('FAMILLE').AsString;
            Qry_insert.Parameters.ParamByName('ARTICLE').Value   := DM.Qry_CA.FieldByName('ARTICLE').AsString;
            Qry_insert.Parameters.ParamByName('MONTANT').Value   := DM.Qry_CA.FieldByName('MONTANT').AsFloat;
            Qry_insert.Parameters.ParamByName('QTE').Value      := DM.Qry_CA.FieldByName('QTE').AsFloat;
            Qry_insert.Parameters.ParamByName('MARGE').Value   := DM.Qry_CA.FieldByName('MARGE').AsFloat;
            Qry_insert.Parameters.ParamByName('MARQUE').Value   := DM.Qry_CA.FieldByName('MARQUE').AsString;
            Qry_insert.ExecSQL;
    La même avec un ADOTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
           Tbl_ca.Append;
            Tbl_ca.FieldByName('DATE_DOC').AsDateTime   := DM.Qry_CA.FieldByName('DATE_DOC').AsDateTime;
            Tbl_ca.FieldByName('CLIENT').AsString       := DM.Qry_CA.FieldByName('CLIENT').AsString;
            Tbl_ca.FieldByName('ANNEE').AsInteger       := DM.Qry_CA.FieldByName('ANNEE').AsInteger;
            Tbl_ca.FieldByName('MOIS').AsInteger        := DM.Qry_CA.FieldByName('MOIS').AsInteger;
            Tbl_ca.FieldByName('FAMILLE').AsString      := DM.Qry_CA.FieldByName('FAMILLE').AsString;
            Tbl_ca.FieldByName('ARTICLE').AsString      := DM.Qry_CA.FieldByName('ARTICLE').AsString;
            Tbl_ca.FieldByName('MONTANT').AsFloat    := DM.Qry_CA.FieldByName('MONTANT').AsFloat;
            Tbl_ca.FieldByName('QTE').AsFloat           := DM.Qry_CA.FieldByName('QTE').AsFloat;
            Tbl_ca.FieldByName('MARGE').AsFloat      := DM.Qry_CA.FieldByName('MARGE').AsFloat;
            Tbl_ca.FieldByName('MARQUE').AsString       := DM.Qry_CA.FieldByName('MARQUE').AsString;
            Tbl_ca.Post;
            DM.Qry_CA.Next;
    Merci
    On progresse .....

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Sinon, serait ce possible d'utiliser d'autres techno hormis le BDE pour utiliser Access.
    Je sais que c'est lourd, mais je ne peux pas rester comme ça.

    Merci
    On progresse .....

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Souvent le problème vient des dates, Access attend un format bien spécifique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Qry_insert.Parameters.ParamByName('DATE_DOC').Value   := FormatDateTime('MM/DD/YYYY hh:mm:ss' ,DM.Qry_CA.FieldByName('DATE_DOC').AsDateTime);
    // Qry_insert.Parameters.ParamByName('DATE_DOC').Value  := DM.Qry_CA.FieldByName('DATE_DOC').AsString;
    // t''en a mis un en trop ;)

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      OldDateFormat : String;
    begin
     // ...
      OldDateFormat := ShortDateFormat;
      ShortDateFormat := 'MM/DD/YYYY';
     Tbl_ca.FieldByName('DATE_DOC').AsDateTime := DM.Qry_CA.FieldByName('DATE_DOC').AsDateTime;
      ShortDateFormat := OldDateFormat;
    Les deux solutions sont possible pour chaque exmple
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Malatar.

    Merci de te pencher sur ce problème.
    J'ai suivi tes conseils mais le problème reste entier.
    Ce qui m'enerve ce que des fois j'arrive à faire 1 ou 2 insertions et après le message d'erreur apparait.
    En pièce jointe la structure de la table Access

    Merci
    On progresse .....

  7. #7
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Sinon,
    Existe t il une autre altérnative à Access utilisant la techno ADO.

    Merci
    On progresse .....

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Andry
    Sinon,
    Existe t il une autre altérnative à Access utilisant la techno ADO.

    Merci
    Je ne comprend pas bien ou tu veux en venir


    Sinon en regardant la structure de ta table, je me pose la question sur plusieurs champs, les numériques sont ils bien configurés ?
    N'essaies tu pas de mettre des float dasn des integer ?
    En delphi les numériques c'est avec un . , pour les bases de données c'est sovent une ,
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Salut,

    Les champs sous Access sont bien paramètrer.
    Voilà la situation actuelle :
    L'appli génère un tableau croisé dynamique et un graphique dynamique des ventes.
    Les données sont issus d'un Serveur MS SQL Server 2000 (connection avec Compos ADO).
    Or, les commerciaux sont souvent déplacement, j'ai du trouver une parade afin que les infos sont toujours disponible : utiliser un fichier access pour stocker les données (et utiliser aussi ADO).
    Le hic, la synchro ne marche pas.
    Donc, comme ça marche pas la synchro avec Access, je cherche un autre support pour enregistrer les tables et utiliser ADO afin de ne pas trop modifier les code.

    Merci
    On progresse .....

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Peux tu me montrer la requete insert que tu fais ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO VW_DOCLIGNE_DETAIL
    (DATE_DOC, CLIENT, ANNEE, MOIS, FAMILLE, ARTICLE, MONTANT, QTE, MARGE, MARQUE) 
    VALUES 
    (:DATE_DOC, :CLIENT, :ANNEE, :MOIS, :FAMILLE, :ARTICLE, :MONTANT, :QTE, :MARGE,:MARQUE)
    On progresse .....

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Essaie en modifiant ces deux lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Qry_insert.Parameters.ParamByName('MONTANT').Value   := FormatFloat('0.00', DM.Qry_CA.FieldByName('MONTANT').AsFloat);
    
    // c'est pas un asInteger la pour la quantité ?
    Qry_insert.Parameters.ParamByName('QTE').Value      := DM.Qry_CA.FieldByName('QTE').AsFloat; 
    
    Qry_insert.Parameters.ParamByName('MARGE').Value   := FormatFloat('0.00',DM.Qry_CA.FieldByName('MARGE').AsFloat);
    Euh ... juste une remarque en passant, le champ QTE c'est un integer ou un float ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  13. #13
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Qté est de type Integer, Entier long sous Access.

    A+
    On progresse .....

  14. #14
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Alors pourquoi tu essaies de lui faire passer un float

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Qry_insert.Parameters.ParamByName('QTE').Value      := 
    DM.Qry_CA.FieldByName('QTE').AsFloat;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Tbl_ca.FieldByName('QTE').AsFloat           := 
    DM.Qry_CA.FieldByName('QTE').AsFloat;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  15. #15
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Malatar,

    J'ai tout essayé avec AsInteger, asFloat, asxxx, mais rien n'à faire.
    Finalement, j'ai abandonné Access(je me demande pourquoi j'y ai pas penser avant) au profit de Firebird Embed quitte à ramanier le code.
    En plus je gagne en rapidité, vu que l'appli manipule des quantité de données pour generer des stats.

    Merci toi d'être penché sur mon cas.
    On progresse .....

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

Discussions similaires

  1. insertion sous access avec clé primaire génèré
    Par alex61 dans le forum VB.NET
    Réponses: 11
    Dernier message: 14/01/2011, 10h45
  2. Réponses: 1
    Dernier message: 19/09/2008, 09h56
  3. [SQL]Problème requete sql sous access avec vba
    Par aaliyan dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 13/04/2007, 18h53
  4. Requete sous Access avec AND et OR
    Par paflolo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/02/2006, 10h35
  5. Réponses: 8
    Dernier message: 20/02/2006, 23h25

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