[SQLServer]Erreur OleDB

Erreur OleDB [SQLServer] - SQL/NoSQL - Programmation

Marsh Posté le 01-08-2005 à 15:02:04    

Bonjour,
je bosse sur un site ASP qui accède à une base SQL Server 2000.
 
Je souhaite insérer des données dans la une table. Pour cela j'éxecute une requête qui est en dur dans le code (pas de procédure stockée donc) et j'obtiens l'erreur suivante :
 

Code :
  1. Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
  2. Une opération OLE-DB en plusieurs étapes a généré des erreurs.
  3. Vérifiez chaque valeur d'état OLE-DB disponible.


 
ça veut dire quoi ce charabia ?? je ne vois pas trop en quoi mon insertion se passe en plusieurs étapes.
je mets le bout de code qui foire au cas où
 

Code :
  1. Cmd.CommandText="INSERT INTO Pers_A_Fct (id_pers, id_Int, id_Domaine, descr_Fct) VALUES (?,?,?,?)"
  2. Cmd.execute ,Array(idPersonne,FctCourant,DomCourant,FctLibCourant),1


 
si quelqu'un a la moindre petite idée, merci d'avance

Reply

Marsh Posté le 01-08-2005 à 15:02:04   

Reply

Marsh Posté le 01-08-2005 à 15:56:33    

euh... t'es sûr qu'on peut passer un array à cmd.execute ???
 
ceci est juste une question, c'est peut-être le cas, mais je ne l'ai jamais vu, ni dans du code, ni dans une doc

Reply

Marsh Posté le 01-08-2005 à 16:10:52    

en fait je suis en stage et je bosse sur une appli déjà existante.
 
et vu le nombre de cmd.execute qui utilise un array dans l'appli, je pense que oui, on peut le faire ;o)
 
en fait on utilise un tableau pour passer plusieurs valeurs à la requête que l'on éxecute.

Reply

Marsh Posté le 01-08-2005 à 16:12:33    

ok, je découvre :D

Reply

Marsh Posté le 01-08-2005 à 16:15:11    

Sinon, je ne sais pas d'où vient ton problème.
Je sais que je l'ai eu il n'y a pas longtemps, mais pas à quoi il était dû... :sweat:

Reply

Marsh Posté le 01-08-2005 à 16:23:24    

et est ce que tu sais comment tu l'a résolu ??

Reply

Marsh Posté le 01-08-2005 à 16:28:31    

ben nan :D

Reply

Marsh Posté le 01-08-2005 à 16:52:36    

même pas une petite idée ?????
 
c'était plutôt du genre le truc tellement évident qu'on ne le voit même pas ou bien un matin, au réveil ça a marché tout seul et depuis plus de problème ???

Reply

Marsh Posté le 01-08-2005 à 17:07:06    

truc évident je dirais. en tout cas, quand j'ai résolu mon erreur, je me souviens m'être demandé le rapport entre mon erreur et celle qu'il me disait.
 
vérifie par exemple que tu n'as pas de trigger ou de FK avec des options de cascade.

Reply

Marsh Posté le 01-08-2005 à 17:07:24    

et tente de passer la requête dans SQL Server directement

Reply

Marsh Posté le 01-08-2005 à 17:07:24   

Reply

Marsh Posté le 01-08-2005 à 17:28:18    

bon ben ma requête elle passe bien dans l'analyeur de requête

Code :
  1. INSERT INTO Pers_A_Fct (id_pers, id_Int, id_Domaine, descr_Fct, datecreation, createur)
  2. VALUES (21035,1,25,'',getdate(),'VANDAMME PHILIPPE')


 
aucun trigger ni FK sur cette table
 
les seules trucs un peu particulier que je fais au niveau du SQL sont :
_l'insertion d'un champ vide
_l'utilisation de la fonction Getdate (qui varemplir un champ datetime

Reply

Marsh Posté le 01-08-2005 à 17:52:38    

merci pour tes conseils Arjuna
 
c'est fini pour moi aujourd'hui, je me casse du boulot....
pas idée de faire un stage pendant le mois d'aout ! y a plus personne, c'est mort, je suis le dernier à partir et mon tuteur ne revient que dans 2 semaines !!!!
 

Reply

Marsh Posté le 01-08-2005 à 18:00:51    

le 'getdate()' tu le passes avec ton array ???
 
si oui, alors t'as déjà un bug ici, met le en clair à la place d'un des ? (à sa place), et vire-le de ton array.
 
pour le champ vide, idem, si tu passes null, je ne suis pas sur qu'avec VB ca marche correctement (déjà, vb n'aime pas les NULL dans les champs typés, et en plus, normalement, un NULL côté programmation n'est pas le même qu'un NULL dans la base, donc essaie de mettre NULL à la place d'un des ?

Reply

Marsh Posté le 02-08-2005 à 09:10:29    

bon alors, je vais raconter mon histoire de puis le début ....
 
en fait, la requête est dans une procédure stockée
hier, j'ai sortie la requête de la procédure stockée "pour faire un essai"
 
donc ce matin je suis repartie sur ma procédure stockée et voici l'erreur que j'ai :
Microsoft OLE DB Provider for ODBC Drivers (0x80040E57)
[Microsoft][ODBC SQL Server Driver]Troncation à droite de la chaîne de données

 
donc voici le code ma PS  
 

Code :
  1. CREATE PROCEDURE procInsertPers_A_Fct
  2. @id_pers as int ,
  3. @id_int as int,
  4. @id_dom  as int,
  5. @descr_fct  as nvarchar(50),
  6. @coll  as nvarchar(70)
  7. AS
  8. INSERT INTO Pers_A_Fct (id_pers, id_Int, id_Domaine, descr_Fct, datecreation, createur)
  9. VALUES (@id_pers, @id_int, @id_dom, @descr_fct, getdate(), @coll)
  10. GO


 
et voici le code qui appel la PS  

Code :
  1. Cmd.CommandText="procInsertPers_A_Fct"
  2. Cmd.CommandType =4
  3. Cmd.execute ,array(idPersonne,FctCourant,DomCourant,FctLibCourant,session("nom_coll" ))


 
comme tu peux le voir le getdate() n'est pas passé dans le array mais exécuté par SQL Server.
sinon l'erreur de ce matin, a été obtenue sans chaine de caractères vides ni NULL
 
je sais pas si peux aider mais voila les données envoyées au navisgateur :

Code :
  1. POST Data:
  2. ind=2&civ=M&nom=TEST&prenom=Test&tel1=&tel2=&tel3=&mail=&fct=6&dom=20&libelle_fct=Pr%E9cision+sur+la+fonction&
  3. fct1=13&dom1=8&libelle_fct1=Pr%E9cision+sur+la+fonction&nvx=Nouvel+interlocuteur

Reply

Marsh Posté le 02-08-2005 à 13:50:39    

personne pour m'aider aujourd'hui ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed