1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    delphi
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : delphi

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 0
    Points
    0

    Par défaut invalid column name in delphi

    I have problem with this code and i don't know how to fix it
    The code is

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ADODataSet1.Close;
      if ListFiltr1.ItemIndex = 0 then
        ADODataSet1.CommandText :=
          'select [EmployeeID],LastName,FirstName,Title,City from Employees where '
          + ListeChampTxt.Items[ListeChampTxt.ItemIndex] +'= "' + TxtCherche.text +
          '" order by ' + ListTrie.Items[ListTrie.ItemIndex] + TxtTrie;
       ADODataSet1.Active := True;
       ADODataSet1.Requery();
    end;

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 229
    Points : 18 867
    Points
    18 867
    Billets dans le blog
    4

    Par défaut

    Bonjour et bienvenue.

    Première remarque, vous êtes sur un forum de langue française donc évitez de vous exprimez dans la langue de Shakespeare.
    Deuxième remarque, cet étrange Requery (ok, je suis pas fan de ADO) qui me semble totalement inutile puisque juste avant vous faites un active:=true (= à Open)

    Quant à l'erreur : nom de colonne invalide, le [EmployeeID] me parait bizarre mais quel SGBD ? Quel description de table ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    delphi
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : delphi

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 0
    Points
    0

    Par défaut le problem est

    Le problem dans ce code est ca

    select [EmployeeID],LastName,FirstName,Title,City from Employees where LastName= "anyname"
    order by [EmployeeID] Asc

    Et moi je veut ca

    select [EmployeeID],LastName,FirstName,Title,City from Employees where LastName= 'anyname'
    order by [EmployeeID] Asc

    Mes je ne ci pas comment modifie

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    juillet 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2005
    Messages : 39
    Points : 78
    Points
    78

    Par défaut

    Bonjour, (une petite formule de politesse ne nuit pas gravement aux doigts qui l'écrivent)

    Peut-être faut-il utiliser QuotedStr, ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADODataSet1.CommandText :=
          'select [EmployeeID],LastName,FirstName,Title,City from Employees where '
          + ListeChampTxt.Items[ListeChampTxt.ItemIndex] +'= ' + QuotedStr(TxtCherche.text) +
          ' order by ' + ListTrie.Items[ListTrie.ItemIndex] + TxtTrie;
    Bonne journée ...

    Cdt

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    delphi
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : delphi

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 0
    Points
    0

    Par défaut merci mi

    Mi jai un autre problem dans order by


    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
    else if ListFiltr1.ItemIndex = 2 then
        ADODataSet1.CommandText :=
          'select [EmployeeID],LastName,FirstName,Title,City from Employees where '
          + ListeChampTxt.Items[ListeChampTxt.ItemIndex] + ' like ' +
          quotedstr(TxtCherche.text) + '%" order by ' + ListTrie.Items[ListTrie.ItemIndex]
          + TxtTrie
      else if ListFiltr1.ItemIndex = 3 then
        ADODataSet1.CommandText :=
          'select [EmployeeID],LastName,FirstName,Title,City from Employees where '
          + ListeChampTxt.Items[ListeChampTxt.ItemIndex] + ' like "%' +
          quotedstr(TxtCherche.text) + '" order by ' + ListTrie.Items[ListTrie.ItemIndex]
          + TxtTrie
      else
        ADODataSet1.CommandText :=
          'select [EmployeeID],LastName,FirstName,Title,City from Employees where '
          + ListeChampTxt.Items[ListeChampTxt.ItemIndex] + ' like "%' +
          quotedstr(TxtCherche.text) + '%" order by ' + ListTrie.Items[ListTrie.ItemIndex]
          + TxtTrie;
     
      ADODataSet1.Active := True;
      ADODataSet1.Requery();
     
     
    end;

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 229
    Points : 18 867
    Points
    18 867
    Billets dans le blog
    4

    Par défaut

    Re,
    ça ne changera pas la face du monde mais en Delphi il existe un case of qui remplacerait joliment ces else if
    avez-vous aussi songé à découper votre commande ?

    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
    const fieldpart : 'select [EmployeeID],LastName,FirstName,Title,City from Employees';
    var wherepart : string;
          orderpart : string;
     
    ...
    Case ListFiltr1.ItemIndex of
      0 : begin
           end;
      1 : begin
           end;
      2 : begin
            // je préfére largement utiliser des format et pouvoir déboguer facilement chaque partie de mon SQL  
            wherepart:= Format('Where %s like %s%%',[ListeChampTxt.Items[ListeChampTxt.ItemIndex], quotedstr(TxtCherche.text)]);
            orderpart:=Format(' Order by %s,%s',[ListTrie.Items[ListTrie.ItemIndex],txttrie]); 
           end;
      ....
     else begin
           end;
    end;
    ADODataset1.Close;
    ADODataSet1.CommandText :=FieldPart+wherepart+orderpart;
    ADODataset1.Open;
    Que contient la variable txttrie ? car dans l'order by les colonnes doivent être séparées par des virgules ?

    une autre remarque votre code fourni une faille d'injection de SQL
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  7. #7
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    juillet 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2005
    Messages : 39
    Points : 78
    Points
    78

    Par défaut

    Bonjour,

    As-tu bien compris et recherché dans la doc à quoi correspond QuotedStr ?

    Ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' like "%' + quotedstr(TxtCherche.text) + '" order by
    sera en erreur car ici QuotedStr n'est pas utilisé correctement ....

    Dans ton message de 09h54, tu indiquais vouloir cela au niveau de la requête :

    select [EmployeeID],LastName,FirstName,Title,City from Employees where LastName= 'anyname'
    order by [EmployeeID] Asc

    à la place de

    select [EmployeeID],LastName,FirstName,Title,City from Employees where LastName= "anyname"
    order by [EmployeeID] Asc

    Or, dans ton dernier message, tu ne tiens pas compte du fait que tu remets le caractère " dans ta requête ... en appliquant QuotedStr sans avoir compris / recherché ce que faisait cette instruction !

    Recherches ce que fait QuotedStr et tu comprendras pourquoi ta requête est en erreur ...

    Etudies bien la réponse de SergioMaster qui apporte les solutions.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    delphi
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : delphi

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 0
    Points
    0

    Par défaut merci pour tout

    Enfin le code sa marche tres bien merci

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

Discussions similaires

  1. Invalid column name
    Par Krustig dans le forum Hibernate
    Réponses: 4
    Dernier message: 06/02/2011, 23h23
  2. Invalid column name ..
    Par lerieure dans le forum MS SQL-Server
    Réponses: 1
    Dernier message: 04/10/2010, 11h09
  3. Invalid column name ? Mais le problème vient d'ailleurs !
    Par TigrouMeow dans le forum Hibernate
    Réponses: 7
    Dernier message: 04/01/2007, 18h11
  4. [SQL Server 2K] : Invalid column name
    Par Kyles dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/05/2006, 12h02
  5. Réponses: 4
    Dernier message: 25/01/2006, 18h25

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