begin process at 2012 02 11 10:30:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

Autre

 > 

Problème requête UPDATE.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème requête UPDATE.

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ée 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 treees urgent probleme dans une fonction [ par trublue ] salut a tous,j'ai programmé une fonction qui doit s'exécuter au moment d'un click sur un boutton mais il y a des erreurs que j'ai pas pu corriger alo 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 requête Update [ par ouss84 ] bjr à tous j'ai une requête update : DecGlob.Req2 = " Update Fournisseur Set CodeFour = '" + dataGridViewFour[1, 1].Value + "',Libellé ='" + dataGrid SOAP et problème de namespace dans l'envoie d'une requête. [ par skerdreux ] Bonjour, J'ai un gros problème dans un webservice que je dois appeller via une requête SOAP qui dépend d'un autre programme dont je n'ai absoluement Requete SQL UPdate [ par Foxnono06 ] Bonjour à tous, Voilà, ma requête est la suivante : [code=cs]string sModifierSQL = "UPDATE [client] SET " + "`nom` = "+ "'" + Nom +"'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales