|
Trouver une ressource
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)
Informations & options pour cette discussion
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
|
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
|
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
|
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
|
???
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
|
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.
|
|
|
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 {
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|