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 :

probleme Requete Update sous paradox


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut probleme Requete Update sous paradox
    Bonjour
    j'ai une table paradox7 vide avec un champ de type date et 5 autre champ de type Alphanumerique
    mon probleme c'est que je veux ajouter les consomation de chaque vehicule de tous les jours donc ajouter les donnée la première fois et apres ca dois etre que des update et tout ca derrière le meme bouton "mise a jour"
    c.a.d pour chaque vehicule une requette insert pour la première fois et par la suite ca dois etre que des update
    donc j pas su comment faire

    voici le code
    pour l'ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      fconsovehicule.qconsovehicule.close;
     fconsovehicule.qconsovehicule.sql.clear;
     fconsovehicule.qconsovehicule.sql.add('insert into consovehicule');
     fconsovehicule.qconsovehicule.sql.add('(Dateajou,Vehicule,Consomation,Kilometrage_utilise,Kilometrage,Moiss)');
     fconsovehicule.qconsovehicule.sql.add('values("'+formatdatetime('mm/dd/yyyy',t)+'","'+fgesttache.DBEvehicule.Text+'","'+fgesttache.DBEsumv.text+'","'+fgesttache.DBEKilomutilis.text+'","'+fgesttache.DBEKiloinit.text+'","'+fgesttache.emois.text+'")');
     fconsovehicule.qconsovehicule.execsql;
    et pour le update:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       fconsovehicule.qconsovehicule.SQL.Clear;
        fconsovehicule.qconsovehicule.SQL.Add('UPDATE consovehicule SET ');
        fconsovehicule.qconsovehicule.SQL.Add('Dateajou='+formatdatetime('mm/dd/yyyy',t)+',');
        fconsovehicule.qconsovehicule.SQL.Add('Vehicule='+fgesttache.DBLvehicule.Text+',');
        fconsovehicule.qconsovehicule.SQL.Add('Consomation='+fgesttache.DBEsumv.text+',');
        fconsovehicule.qconsovehicule.SQL.Add('Kilometrage_utilise='+fgesttache.DBEKilomutilis.text+',');
        fconsovehicule.qconsovehicule.SQL.Add('Kilometrage='+fgesttache.DBEKiloinit.text+',');
        fconsovehicule.qconsovehicule.SQL.Add('Moiss='+fgesttache.emois.text);
        fconsovehicule.qconsovehicule.SQL.Add('WHERE Vehicule='+fgesttache.DBLvehicule.Text);
        fconsovehicule.qconsovehicule.ExecSQL;
    Merci de me dire comment je dois fusioner ces deux requette pour que si un vehicule est inserer une première fois on pass a la requet de upadate directement toujours sous le meme boutton merci

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Une 1° remarque dans l'immédiat: le code présenté pour ta requête Ajout fait un Update.

    Une erreur de copier/coller ?

    @+ Claudius

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Merci cl@udius j'ai changer la

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par toxicoakatox Voir le message
    Merci de me dire comment je dois fusioner ces deux requette pour que si un vehicule est inserer une première fois on pass a la requet de upadate directement toujours sous le meme boutton merci
    Sous Paradox tu ne pourras pas fusionner ces 2 instructions SQL en une instruction unique (sachant que d'autres SGBD le permettent).

    Donc pour résoudre ton problème, tu peux par exemple:
    1. Tout d'abord vérifier la présence/absence de ton véhicule dans ta table (avec un locate par ex.)
    2. Exécuter l'Insert ou l'Upate suivant le cas


    ou bien
    1. Effectuer d'abord un Update.
    2. Si Echec de l'update (AffectedRows = 0), effectuer alors un Insert


    Voilà pour le principe.

    Ensuite je te conseillerais d'utiliser des requêtes paramétrées. Le code sera un peu plus long, mais plus lisible donc source de moins d'erreurs.
    L'utilisation des paramètres est pratique notamment pour la transmission de valeur Date.

    @+ Claudius

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Cl@udius Voir le message

    ou bien
    1. Effectuer d'abord un Update.
    2. Si Echec de l'update (AffectedRows = 0), effectuer alors un Insert

    un grand merci a vous
    mais je suis vraiment débutant dans ce domaine donc auriez vous la gentillesse de me faire un exemple avec le code que j'ai donner tout a l'heure merci beaucoup

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Cela donne quelque chose comme ceci:

    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
      with FConsoVehicule.QConsoVehicule do
      begin
        Close;
        SQL.Clear;
        // Mise à jour des données
        SQL.Add('UPDATE consovehicule SET ');
        // etc...
        ExecSql;
     
        if RowsAffected = 0 then
        begin
          // Aucun enregistrement mis à jour: véhicule non trouvé
          // -> Insertion d'un nouvel enreg
          SQL.Clear;
          SQL.Add('INSERT INTO consovehicule');
          // etc...
          ExecSQL;
        end;
      end;
    La propriété à examiner est RowsAffected et non AffectedRows comme indiqué dans mon précédent post.

    @+ Claudius

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Merci je vais tester et je vous tiens o courant

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    j'au un message d'erreur au niveau du matricule du vehicule au premier espace

    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
    with FConsoVehicule.QConsoVehicule do
      begin
        Close;
        SQL.Clear;
        // Mise à jour des données
        SQL.Add('UPDATE consovehicule SET ');
        sql.add('Set(Dateajou="'+formatdatetime('mm/dd/yyyy',t)+'",Vehicule="'+fgesttache.erecveh.Text+'",Consomation="'+fgesttache.DBEsumv.text+'",Kilometrage_utilise="'+fgesttache.DBEKilomutilis.text+'",Kilometrage="'+fgesttache.DBEKiloinit.text+'",Moiss="'+fgesttache.emois.text+'")');
        ExecSql;
     
        if RowsAffected = 0 then
        begin
          // Aucun enregistrement mis à jour: véhicule non trouvé
          // -> Insertion d'un nouvel enreg
          SQL.Clear;
          SQL.Add('INSERT INTO consovehicule');
          sql.add('(Dateajou,Vehicule,Consomation,Kilometrage_utilise,Kilometrage,Moiss)');
          sql.add('values("'+formatdatetime('mm/dd/yyyy',t)+'","'+fgesttache.erecveh.Text+'","'+fgesttache.DBEsumv.text+'","'+fgesttache.DBEKilomutilis.text+'","'+fgesttache.DBEKiloinit.text+'","'+fgesttache.emois.text+'")');
          ExecSQL;
        end;
      end;
    voici l'erreur
    Utilisation Incorrecte du mot-clé. Elément: Set(Datajou="07/13/2009", Vehicule="283
    Numéro de ligne: 2
    merci

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Dans la requête Update le mot-clé SET est répété 2 fois.


    Astuce: Tu peux copier le message d'erreur depuis la boite de dialogue avec un simple Ctrl+C au lieu de faire une capture d'écran.

    @+

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    re
    j'ai enlevé le set mais il y a encore la même erreur

  11. #11
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    salut
    revoit ton ancien poste, SergioMaster ta déjà répondu, pour insert en utilisant les paramétre, (là ton insert ne marchera pas)
    si tu veux pas utlisé les paramétre( déconseillé dans ton cas de débutant) avec les texte et les date utilise quotstr ou " ' "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        
    fconsovehicule.qconsovehicule.SQL.Add('UPDATE consovehicule SET ');
    fconsovehicule.qconsovehicule.SQL.Add('Dateajou='''+formatdatetime('mm/dd/yyyy',t)+''',');
    fconsovehicule.qconsovehicule.SQL.Add('Vehicule='''+fgesttache.DBLvehicule.Text+''',');
    bon dev
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Merci a tous
    ce projet va me rendre dingue

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

Discussions similaires

  1. probleme de requetes UPDATE sous CentOS
    Par King_T dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/03/2007, 17h35
  2. [Access 97] problème requête update
    Par tazmania dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/09/2006, 23h20
  3. [Oracle 9.2.] Problème requete "update"
    Par Isa31 dans le forum Oracle
    Réponses: 49
    Dernier message: 01/08/2006, 15h38
  4. [requete SQL] Probleme requete UPDATE
    Par Shiryu44 dans le forum JDBC
    Réponses: 12
    Dernier message: 10/03/2005, 12h41
  5. probleme requete update
    Par Amandine62 dans le forum ASP
    Réponses: 12
    Dernier message: 27/01/2005, 12h15

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