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 :

delphi7 requete access fonction replace n'est pas reconnue


Sujet :

Delphi

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 532
    Par défaut delphi7 requete access fonction replace n'est pas reconnue
    Bonjour,
    j'essaye d’exécuter une requête depuis delphi pour maj d'un champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      st1:='UPDATE perso SET perso.nom = Replace([nom],".","");';
      dm2.ADOQperso.SQL.Text:=st1;
      dm2.ADOQperso.ExecSQL;
    en exécutant mon application un message d'erreur
    " Fonction 'Replace' non définie dans l'expression."
    je souhaite connaitre où est le problème.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    ce n'est clairement pas un problème Delphi 7 mais plutôt un problème de syntaxe SQL ou de driver car la fonction Replace n'est dispo qu'à partir d'access 2000
    pour moi, [nom] dans le SQL n'est pas une string ni une colonne
    j'utiliserai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    st1:='UPDATE perso SET nom = Replace(nom,".","");';
    Mais comme je n'utilise ni access ni Ado puisqu'aucun des deux ne font partie de mes préférences ...

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    On trouve sur Google, on trouve effectivement l'info remontée par SergioMaster et exactement ce message d'erreur sur notre présent forum

    C'est même une FAQ : Replace n'existe pas sous Access 97, comment faire ?

    Un essai dans un SELECT au lieu d'un UPDATE, ajoute un TDBGrid, un TDataSource sur une nouvelle TADOQuery ADOQpersoForGrid juste pour faire le test, pas d'Exception et résultat comme attendu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      st1:='SELECT nom, Replace(nom,".","") AS remplacement FROM perso;';
      dm2.ADOQpersoForGrid.SQL.Text:=st1;
      dm2.ADOQpersoForGrid.Open;
    Cela remontera ton erreur, tu pourras soit mettre à jour soit mettre en place une solution paliative.

    Si tu ne peux pas changer ta version de ACCESS (2000), tu peux créer ta propre fonction, voir cette réponse publiant le REPLACE interne du VB au niveau SQL
    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

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 532
    Par défaut
    Merci ShaiLeTroll pour la réponse mais hélasse sa n'a pas marché. toujours le même message d'erreur
    Fonction 'Replace' non définie dans l'expression
    delphi7
    windows7 64 bits
    access 2007
    Deux, n'apprendront pas; le timide :oops: et l'arrogant :?

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Je n'ai pas ACCESS mais depuis le temps, ce problème devrait résolu

    Au pire tu pouvais faire un algo Delphi genre

    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
     
    QWrite.SQL := 'UPDATE PERSO SET NOM = :pNomR WHERE NOM = :pNom';
    QWrite.Prepared := True;
     
    QRead.SQL := 'SELECT NOM FROM PERSO';
    QRead.Open();
    while not QRead.EoF do
    begin
      QWrite.ParamByName('pNom').AsString := QRead.FieldByName('NOM').AsString;
      QWrite.ParamByName('pNomR').AsString := StringReplace(QRead.FieldByName('NOM').AsString, '.', '', [rfReplaceAll]);
      if QWrite.ParamByName('pNomR').AsString <> QWrite.ParamByName('pNom').AsString then
        QWrite.ExecSQL();
     
      QRead.Next();
    end;

    En Excel par exemple "1234567890" on remplace "456" par "ABC" ça donne "123ABC7890"
    Avec
    A1 = 1234567890
    A2 = 456
    A3 = ABC
    Code EXCEL : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER(GAUCHE(A1;TROUVE(A2;A1)-1);A3;DROITE(A1;NBCAR(A1)-TROUVE(A2;A1)-NBCAR(A2)+1))

    On peut vite le transformer en SQL ACCESS, à l'arrache je dirais
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom, Left(nom, InStr(".", nom) - 1) & "" & Right(nom, Len(nom) - InStr(".", nom) - Len(".") + 1) AS remplacement FROM perso
    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    st1:='SELECT nom, Left(nom, InStr(".", nom) - 1)  & Right(nom, Len(nom) - InStr(".", nom) - Len(".") + 1) AS remplacement FROM perso;';
    CHARINDEX ou InStr à vérifier

    Cela remplace qu'une seule fois, le premier

    Donc au pire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dm2.ADOQperso.SQL.Text := 'UPDATE perso SET perso.nom = Left(nom, InStr(".", nom) - 1)  & Right(nom, Len(nom) - InStr(".", nom) - Len(".") + 1)';
    dm2.ADOQperso.Prepared := True;
    repeat 
      dm2.ADOQperso.ExecSQL();
    until dm2.ADOQperso.RowsAffected = 0;
    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

Discussions similaires

  1. [Toutes versions] Fonction Column() n'est pas reconnue
    Par Sielmeth dans le forum Access
    Réponses: 5
    Dernier message: 13/02/2019, 20h24
  2. Fonction qui n'est pas reconnue par chrome et opéra
    Par sergefaure dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/01/2016, 17h13
  3. [SQL-Server] La fonction mssql_connect n'est pas reconnue. Que faire ?
    Par ecco27 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/03/2008, 21h29
  4. Fonction qui n'est pas reconnue
    Par petitours dans le forum IHM
    Réponses: 4
    Dernier message: 17/08/2007, 15h28
  5. Ma fonction n'en est pas une ?!
    Par JFKen dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 25/08/2006, 15h08

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