Le SQL fonctionne très bien sur les tables Paradox.
Le SQL fonctionne très bien sur les tables Paradox.
Tu n'as pas oublié les table.First et table.Next par hasard :Envoyé par kikica
Voici mon côde:Envoyé par Thierry67
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 procedure TForm1.CLcl1Click(Sender: TObject); var chaine : string; begin table1.first; while not table1.eof do begin Chaine:= table1.FieldByName('Nom').AsString; if Pos('DA', Chaine) = 1 then begin // showmessage ('da'+Copy(Chaine, 3, Length(Chaine)-2)); table1.Edit; table1.FieldByName('Nom').AsString:= 'da'+Copy(Chaine, 3, Length(Chaine)-2); table1.Post; end; table1.Next; end; end;
Juste une remarque en passant.
Est ce que tu as au moins une donnée dans ta table qui permet de faire le traitement, car sinon c'est un peu normal que cela ne fonctionne pas.
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Bien sûr que j'ai des données, et ça fonctionne, mais UN enregistremment à la fois!
C'est normal que ca fonctionne qu'un seul enregistrement à la fois, vu que le bout de programme est un parcours de la table.
Le seul moyen pour que ca fasse tout d'un coups c'est les requetes.
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Peux-tu me faire un exemple, stp? Je suppose que ce côdedevrait le faire, mais comment l'utiliser? je met dans un click du bouton? Ca ne marche pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE ta_table SET ton_champ = CONCAT('da', SUBSTRING(ton_champ, 3)) WHERE ton_champ LIKE 'DA%'
Qu'est-ce que tu entends par UN enreg à la fois.Envoyé par kikica
Lorsque tu lances ta fonction, est-ce que au bout du compte tout tes enreg sont modifiés ?
OU BIEN
Il faut lancer plusieurs fois la fonction pour que tes enreg soit modifiés ?
SI 1ere réponse, comme le dit Malatar, normal. ( et même une requete effectue cela en interne 1 à 1).
SI 2EME réponse, alors il se peut que table1 soit indexée sur ton champs 'nom' et de surcroit que l'index tienne compte de la caste.
Dans ce cas, après post d'un enregistrement, celui ci passe à la fin de ta table (car les minuscules sont APRES les majuscules dans la table ASCII) et donc tu te retrouves proche de la fin de ta table (en tout cas après tes noms en majuscules) et tu atteinds ta fin de Table
-> traitement fini alors qu'il reste des noms en majuscule...
exemple
... donc 1 enreg à la fois à cause de l'indexDA1, DA2, DA3
1er appel: DA2, DA3, da1
2eme appel: DA3, da1, da2
3eme appel, da1, da2, da3
bon courage !
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
Ce que je voulais dire par "Un à la fois" c'est qu'il faut que je clicque autant de fois combien il y a des enregistremments qui commencent par 'DA' pour que enfin tous soient traités.
donc tu dois être dans le 2eme cas... as-tu un index sur Table1 sur 'nom' avec différence Min/Maj ?
Je suppose que oui
Sinon, le code de parcours de la table et de modif est correct
La solution la plus simple dans ce cas est celle de Malatar.
Si tu ne veux pas utiliser de requete SQL:
- soit tu enleves l'index avant ton parcours
- soit, tu poses une autre table non indexée (pointant sur la même table physique) que tu parcours et modifies (avec un refresh sur Table1 au bout)
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
voir TQuery dans l'aide en ligneEnvoyé par kikica
PAS DE DESTIN, C'EST CE QUE NOUS FAISONS
Bon, j'ai déposé un TQuery sur ma Form1 et j'ai mis le côde
dans la propriété SQL de Query1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE table1 SET nom= CONCAT('da', SUBSTRING(nom, 3)) WHERE nom LIKE 'DA%'
Ensuite, j'ai mis un bouton1 et dedans le côde:
Et ça ne marche toujours pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part query1.ExecSQL;
Ca te fait une erreur ?
As tu fait un rafraichissement de ta table après l'envoi de la requete ?
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Il précise pas le "mot clé" qui bug ?Envoyé par kikica
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
J'ai résolu le problème: j'ai simplément mis tout le côde dans une nouvelle boucle for i=1 to 100 do, et je n'ai plus besoin de clicquer 100 fois!
C'est pas la solution d'école, mais important c'est que ça marche!
Merci @ vous tous pour votre aide!
Et tu fais comment si tu as plus de 200 valeurs à modifier ? Tu vas changer ton code ?Envoyé par kikica
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Tu aurais mieux fais de cliquer 100 fois alors si c'était pour arriver à ca !
à raison de 2 clic par seconde, ca n'aurait pas pris plus d'une minute
Rentrer 100 fois dans une boucle 'while not eof' en sachant que des la 1ere modif, tu te retrouves en fin de table à cause (probablement) des index...
J'espère que ce n'est pas un projet professionel, et qu'il n'y a pas quelqu'un qui doit repasser ton code
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
je ne crois pas que CONCAT ou SUBSTRING sois reconnu par le moteur paradox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE table1 SET nom= CONCAT('da', SUBSTRING(nom, 3)) WHERE nom LIKE 'DA%'
D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)
Euh... Je sais pas, j'ai pêché ça dans l'aide de MySQL... Je n'ai jamais utilisé d'autre BD. Je pensais que c'était une sorte de standartEnvoyé par HumanTool
sjrd, ancien rédacteur/modérateur Delphi.
Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
Découvrez Mes tutoriels.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager