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

 Delphi Discussion :

Requête sql ne fonctionne pas


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Points : 164
    Points
    164
    Par défaut Requête sql ne fonctionne pas
    Bonjour,

    je n'arrive pas a comprendre pourquoi sa ne marche pas, une requête très simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    requ.Sql.Clear;
    requ.Sql.Add('Alter Table utilisateur Change DRwings DRwingsVal string(1)');
    requ.ExecSql;
    j'utilise delphi 10 et l'objet ADOQUERY, sincèrement je ne comprend pas qu'elle est le problème le message d'erreur lors de l’exécution est le suivant :

    Erreur de syntaxe dans l'instruction ALTER TABLE

    Merci a vous

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 453
    Points : 24 864
    Points
    24 864
    Par défaut
    ADOQUERY mais sur quel SGBD ?
    CHANGE et pas MODIFY, ça ferait penser à MySQL
    Avez-vous vérifier sur un outil avant ? si c'est MySQL un truc comme MySQL Workbench (j'en ai pas fait depuis MySQL 5.1)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Alter Table utilisateur Change DRwings DRwingsVal string(1)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE nom_table
    CHANGE colonne_ancien_nom colonne_nouveau_nom type_donnees

    string c'est bizarre, en général c'est VARCHAR()


    Si c'est pas du MySQL, plus de chance avec un MODIFY
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Points : 164
    Points
    164
    Par défaut
    Bonjour,
    Merci devotre reponse, j'utilise une base de donnée sous Microsoft Access, ce que je n'arrive pas comprendre est que pour ajouter des champ sa marche tres bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    requ.Sql.Clear;
    requ.Sql.Add('Alter Table utilisateur ADD IntTransmittals string(1)');
    requ.ExecSql;
    pour rename un champ sa marche pas, hors que j'ai bien récupérer la requête en question sur le même site qui propose comment ajouter.
    Seulement le rename qui marche pas et je vient de teste avec MODIFY sa marche pas, sa affiche le même message d'erreur

    Merci

  4. #4
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par Hamza Voir le message
    Bonjour,

    je n'arrive pas a comprendre pourquoi sa ne marche pas, une requête très simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    requ.Sql.Clear;
    requ.Sql.Add('Alter Table utilisateur Change DRwings DRwingsVal string(1)');
    requ.ExecSql;
    j'utilise delphi 10 et l'objet ADOQUERY, sincèrement je ne comprend pas qu'elle est le problème le message d'erreur lors de l’exécution est le suivant :

    Erreur de syntaxe dans l'instruction ALTER TABLE

    Merci a vous
    où avez-vous trouvé la syntaxe du alter table pour Access ?
    sous ce lien : https://docs.microsoft.com/fr-fr/off...oft-access-sql
    je ne vois pas l'utilisation du mot clé "CHANGE", vous êtes sûr de votre requête ?

  5. #5
    Membre habitué Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Points : 164
    Points
    164
    Par défaut
    Re Bonjour,

    Pour le moment je vais depanner avec le code suivant :

    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
    requ.Sql.Clear;
    requ.Sql.Add('Alter Table utilisateur ADD DRwingsVal string(1)');
    requ.ExecSql;
    BDD.Connected:=false;BDD.Connected:=true;utilisateur.Active:=true;
    utilisateur.First;
    while not(utilisateur.Eof) do
    begin
    utilisateur.Edit;
    utilisateur.FieldValues['DRwingsVal']:=utilisateur.FieldValues['DRwings'];
    utilisateur.Post;
    utilisateur.Next
    end;
    requ.Sql.Clear;
    requ.Sql.Add('Alter Table utilisateur DROP DRwings');
    requ.ExecSql;
    je créer le nouveau champs, je le remplis avec les même valeur du champ que je veux rename et enfin je delete l'ancien champ.

    Merci

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 453
    Points : 24 864
    Points
    24 864
    Par défaut
    Effectivement c'est votre source de documentation qui doit mélanger les SQL de différents SGBD, la seule fiable c'est la MSDN

    Sinon j'écrirais plutôt ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    requ.Sql.Text :='Alter Table utilisateur ADD COLUMN DRwingsVal string(1)';
    requ.ExecSql;
    requ.Sql.Text :='update utilisateur set DRwingsVal = DRwings '; // Sera nettement plus rapide qu'une boucle
    requ.ExecSql;
    requ.Sql.Text :='Alter Table utilisateur DROP COLUMN DRwings';
    requ.ExecSql;
    ou même si ACCESS le supporte (à l'instar de MSSQL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    requ.Sql.Text := ' Alter Table utilisateur ADD COLUMN DRwingsVal string(1) ; ' + sLineBreak
                   + ' update utilisateur set DRwingsVal = DRwings ; ' + sLineBreak
                   + ' Alter Table utilisateur DROP COLUMN DRwings ; ';
    requ.ExecSql;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre habitué Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Points : 164
    Points
    164
    Par défaut
    Bonsoir,

    je vous remercie infiniment, sa fonctionne très bien mieux que la boucle , cela dit pour sLineBreak Access ne le supporte pas.

    encore merci a vous

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

Discussions similaires

  1. [AJAX] Requête SQL ne fonctionne pas AJAX
    Par FrancisKu dans le forum AJAX
    Réponses: 0
    Dernier message: 26/06/2013, 16h09
  2. Class C# avec requéte SQL qui fonctionne pas
    Par nasimpat7 dans le forum ASP.NET
    Réponses: 13
    Dernier message: 01/04/2009, 23h58
  3. Réponses: 4
    Dernier message: 02/02/2009, 17h01
  4. [MySQL] Ma requête SQL ne fonctionne pas
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/01/2007, 12h41

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