Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème requête UPDATE. [ Base de données / Autre ] (woot6768)

lundi 3 juillet 2006 à 11:10:16 | Problème requête UPDATE.

woot6768

Salut,
J'ai un souci avec une requête, je souhaite mettre à jour une base de données via des requpetes UPDATE, mais il me génère une exception, il me dis que j'ai un nombre d'argument incorrect dans l'expression TRIM ( ).
Je vous passe le code correspondant :

string lineCmd = "UPDATE M9004_CONTACTSYNC SET CIVILITY= TRIM( {0} ), FULLNAME= TRIM( {1} ), FIRSTNAME= TRIM( {2} ), LASTNAME= TRIM( {3} ) WHERE CONTACTSYNID= {4} ";

string req = "SELECT CIVILITY, FULLNAME, FIRSTNAME, LASTNAME, CONTACTSYNCID FROM M9004_CONTACTSYNC";

lineCmd =

String.Format(lineCmd, CIV, FULL, FIRST, LAST, Recordset.Fields["CONTACTSYNCID"].Value);

OdbcCommand cmd = newOdbcCommand(lineCmd, connection2);

cmd.ExecuteNonQuery();//C'est sur cette ligne que l'exeption est générée.


De plus, lorque j'enlève les 'TRIM()', il me dis qu'il y a une erreur dans la syntaxe 'UPDATE'.
Je ne trouve pas de solution sur le net, donc est-ce que quelqu'un disposerait d'un lien ou même mieux, d'une réponse!
Merci


_________________________________________________________________________
Woot

lundi 3 juillet 2006 à 12:54:47 | Re : Problème requête UPDATE.

dgouttegattat

Membre Club
Réponse acceptée !
Bonjour,
As-tu essayé d'ajouter des apostrophes (') pour encadrer l'argument de TRIM, comme ceci : TRIM( '{0}' ) ?


lundi 3 juillet 2006 à 14:04:49 | Re : Problème requête UPDATE.

woot6768

Salut dgouttegattat,
J'ai mis ta solution en place, et cette fois ci, il m'affiche une autre exception, elle est la suivante : "Trop peu de paramètres. 1 attendu.".
Saurai-tu ce que signifie cette erreur?


_________________________________________________________________________
Woot

lundi 3 juillet 2006 à 14:20:44 | Re : Problème requête UPDATE.

dgouttegattat

Membre Club
Là, je sèche...
Voyons. Si la fonction attend 1 paramètre et qu'elle en reçoit "trop peu", cela veut manifestement dire qu'elle en reçoit 0. Mais pourquoi ?
Est-ce que tu peux afficher le contenu de la variable lineCmd après le String.Format(...) et me donner le résultat ? Merci.

lundi 3 juillet 2006 à 14:30:35 | Re : Problème requête UPDATE.

woot6768

Juste après String.Format(), elle me renvoie ceci :
"UPDATE M9004_CONTACTSYNC SET CIVILITY= TRIM( '' ), FULLNAME= TRIM( '' ), FIRSTNAME= TRIM( 'YVES' ), LASTNAME= TRIM( 'JNE' ) WHERE CONTACTSYNID= 878 "
En faite je viens de comprendre! Ta solution fonctionne, le problème est que tout mes champs ne sont pas forcément remplies.
Comment faire pour que cela n'affecte pas le fonctionnement de mon code?
En plus il faut que je laisse les champs vide, je ne peu pas modifier cette base...


_________________________________________________________________________
Woot

lundi 3 juillet 2006 à 14:47:33 | Re : Problème requête UPDATE.

dgouttegattat

Membre Club
Si tu veux que ton code fonctionne même avec des champs vides, je pense que le plus simple serait quelque chose comme ça :

string lineCmd = "UPDATE M9004_CONTACTSYNC SET CIVILITY='{0}', FULLNAME='{1}', FIRSTNAME='{2}', LASTNAME='{3}' WHERE CONTACTYNID={4}";
...
lineCmd = String.Format(lineCmd, CIV.Trim(), FULL.Trim(), FIRSTNAME.Trim(), LASTNAME.Trim(), Recordset.Fields["CONTACTSYNCID"].Value);

Autrement dit, tu "trimmes" (je ne sais pas s'il y a un terme français pour ça...) tes chaînes de caractères dans le code C# plutôt que dans le code SQL, l'avantage étant que la méthode Trim() du type System.String() ne génère (à ma connaissance) pas d'exception lorsqu'elle est appelée sur une chaîne vide, elle renvoie simplement une chaîne vide.
Normalement, cela devrait fonctionner quel que soit l'état des champs.
À noter, le mot-clé dans la phrase précédente est normalement...

lundi 3 juillet 2006 à 14:56:51 | Re : Problème requête UPDATE.

woot6768

Alors là, je ne comprend pas, il me remet la même erreur.
C'est-à-dire "Trop peu de paramètres. 1 attendu."!
Voilà si tu as une autre idée... Car là, je suis à sec lol


_________________________________________________________________________
Woot

lundi 3 juillet 2006 à 15:38:40 | Re : Problème requête UPDATE.

dgouttegattat

Membre Club
???

C'est peut-être dû au fait que la base de données a été conçue de manière à interdire d'affecter des chaînes vides à certaines colonnes. Si tel est le cas, il faudrait affecter la valeur NULL (SQL, pas C#) au lieu d'une chaîne vide ''.

Peux-tu essayer d'exécuter une requête codée "en dur", du genre : "UPDATE M9004_CONTACTSYNC SET CIVILITY=NULL, FULLNAME=NULL, FIRSTNAME='YVES', LASTNAME='JNE' WHERE CONTACTSYNCID=878" et me dire si ça marche ?

Par ailleurs, quel système de base de données utilises-tu (SQL Server, Access, MySQL, ...) ?

lundi 3 juillet 2006 à 16:07:00 | Re : Problème requête UPDATE.

woot6768

Tout d'abord, c'est une base de données Access.
Ensuite, j'ai fait ce que tu m'a dis au niveau de la requête, et ça n'a pas fonctionné (toujours la même erreur!)
J'ai aussi essayer d'initialiser les champs 'en dur' à NULL dans le code, mais sans succés!
Et enfin, j'ai tester la chose suivante qui n'a pas fonctionner non plus :
string vide = -1;

ADODB.

Field field1 = Recordset.Fields["CIVILITY"];

if (field1.Value != DBNull.Value)

{

if (Convert.ToString(Recordset.Fields["CIVILITY"]).Length > 0)

{

CIV = Recordset.Fields[

"CIVILITY"].Value.ToString();

CIV = (CleanEspaces(CIV)).Trim();

CIV = Cleanup((Recordset.Fields[

"CIVILITY"].Value).ToString(), limite_autres);

CIV = EpurerNom(CIV, exclusP);

}

}

else{                     /*J'ai donc rajouter ceci pour affecter une valeur à ces champs vides mais cela n'à pas fonctionner*/

CIV = vide;

break;

}


Aurait-tu une autre proposition?
Je continue à chercher en parallèle, mais je rame de plus en plus...
Et puis, je suis sûr que c'est un truc tout bête!

_________________________________________________________________________
Woot

lundi 3 juillet 2006 à 16:22:58 | Re : Problème requête UPDATE.

dgouttegattat

Membre Club
Je suis désolé, mais là, je crois bien que je suis à court d'idées.

Juste une dernière, peut-être : il faudrait ouvrir la base de données sous Access et tester les différentes requêtes SQL (avec apostrophes, sans apostrophes, avec TRIM, sans TRIM, avec NULL, ...) directement dans Access. Ça fait un bail que je n'ai plus utilisé Access, donc je ne sais plus comment on fait pour entrer du code SQL directement (sans passer par les différents assistants), mais tu devrais trouver cela dans l'aide d'Access. Cela te permettrait de trouver LA bonne syntaxe SQL qui fonctionne, que tu pourrais ensuite utiliser dans ton code.

Une dernière possibilité : comme manifestement, le problème vient davantage des instructions SQL que du code C#, tu pourrais essayer de te renseigner du côté de sqlfr.com.

Voilà, bon courage ! S'il me vient une autre idée, je t'en fais part immédiatement.


1 2

Cette discussion est classé dans : string, requête, trim, update, linecmd


Répondre à ce message

Sujets en rapport avec ce message

Problème lors de l'exécution d'une requête SQL [ par vonbier ] Salut,je débute en C# et j'ai un problème lors de l'exécution d'une requête toute simple sur SQL Server 2000.Voici mon codestring conn = "server=HECTO envoi de requetes multiples [ par maxelpiratos ] re bonjour c encore moi le novice :)alors : j'ai 9 textfield sur une page, je récupère leur contenu, je vérifie que c bien des integer et je les envoi requête update access en c# [ par dinosors_evolution ] Je suis newbi en c#mon probléme est que lorsque je fait une requête update il me donne le message suivants:"Type de données incompatible dans l'expres dataset / bindingsource / TableAdapter Update d une valeur [ par leroitony ] Bonjour à tous,Voila ma premiere demand d'aide ;) je vous explique mon probleme j'ai datagridview dans lequelle je charge une table d'une source de do Linq2SQL - Un update foireux [ par yannickiwi ] Bonjour, J'essaie de faire un update dans sql server avec linq2sql. Le code se compile, aucune erreur se passe, la mise à jour ne se fait pas. Voici Problème de Trim() sur un Byte converti en String [ par fleothekiller ] Bonjour ! Voilà quelques heures que je gratte sur un petit problème, mais je ne trouve malheureusement pas la solution. Je m'explique : Je récupère le Problème de récupération de données EXIF [ par bulldog16 ] Bonjour,J'ai créer un programme qui permet de lire l'entete des photos grâce aux données EXIF.J'arrive à récupérer la marque de l'appareil, son model, Probleme avec fonction Split C# [ par MisterEdddd ] Bonjour,Je suis debutant en programmation C# et j'ai un petit problème avec la fonction Split.Voilà. je veux lire chaque ligne d'un fichier csv ou txt erreur dans traduction via api google :"Index and length must refer to a location within the string" [ par tkd1984 ] bonjour j'ai entrain de realiser une application desktop sous c#,qui traduire n'import quelle texte entrer avec l'aide de l'api google,voici le code : insertion [ par medinfo87 ] salut tt le monde,bon j'ai un problème pour cette insertion,je me demande si qq'un peut m'aider :else                                    {            


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.