Bonjour Marc. Je suis d'accord qu'il aurait fallu utiliser la fonction Trim de PB. Mais Omega souhaite utiliser une opération de suppression des espaces en une seule opération SQL
omega a écrit :ce que je souhaite c'est de pouvoir modifier la table en utilisant UNE SEULE LIGNE (EXEMPLE: Update fichier set Nom=trim(nom)).
Je sais aussi qu'omega utilise d'habitude des bases de données SQLite.
Avec ces seules informations, petite démonstration :
- Création d'une table clients
- Ajout de deux noms avec des espaces avant et aprés les nom
- Traitement de suppression de ces espaces
en une seule ligne de commande.
Code : Tout sélectionner
EnableExplicit
Enumeration
#DataBase
EndEnumeration
UseSQLiteDatabase()
Global ReqSql.s
;- Création base de données en mémoire
OpenDatabase(#DataBase, ":memory:", "", "")
;Creation de la table clients (trés simplifié)
ReqSql = "CREATE TABLE clients ("
ReqSql + "idauto INTEGER PRIMARY KEY," ;Identification auto
ReqSql + "nom TEXTE," ;Nom du client
ReqSql + "compte INTEGER"
ReqSql + ");"
DatabaseUpdate(#DataBase, ReqSql)
;Ajout d'un client (par defaut idauto prendra la valeur 1)
ReqSql = "insert into clients (nom, compte) values (?,?)"
SetDatabaseString(#Database, 0, " falsam")
DatabaseUpdate(#Database, ReqSql)
ReqSql = "insert into clients (nom, compte) values (?,?)"
SetDatabaseString(#Database, 0, " omega ")
DatabaseUpdate(#Database, ReqSql)
;Suppression des blancs avant et aprés les nom EN UNE SEULE OPERATION SQL
ReqSql = "update clients set nom = LTRIM(RTRIM(nom))"
DatabaseUpdate(#Database, ReqSql)
;-Vérification
If DatabaseError() <> ""
MessageRequester("Information", "Immpossible de mettre à jour la base de données" + #CRLF$ + DatabaseError())
Else
ReqSql = "SELECT nom FROM clients"
DatabaseQuery(#Database, ReqSql)
Debug "Liste clients #database"
While NextDatabaseRow(#Database)
Debug "Nom : ->" + GetDatabaseString(#Database, 0) + "<-"
Wend
EndIf