Je suis en train de faire un programme (jetable) qui charge les tables
d'un ERP.
Si j'ai une duplicate key, il me jette (normal) mais le message
intercepter n'est pas top (ci-dessous)
Personne n'a une id=E9e sur la facon de recuperer le message de la base,
donc
"Impossible d'ins=E9rer une ligne de cl=E9 en double dans l'objet
'dbo.OAS_LINKLINE' avec un index unique 'oas_linkline_index1'. "
plutot que le roman ci-dessous ?
Sinon, je me ferais une p'tite methode pour parser le texte et
recuperer la premiere "description" du message mais c'est rigolo que
ca ne me renvoit pas juste la cause de l'erreur au lieu d'un pav=E9
pareil.
Evidemment j'ai test=E9 les variantes du sql.erreur, sql.meserreur
etc...
Description =3D Impossible d'ins=E9rer une ligne de cl=E9 en double dans
l'objet 'dbo.OAS_LINKLINE' avec un index unique 'oas_linkline_index1'.
Source =3D Microsoft OLE DB Provider for SQL Server
SQL State =3D 23000
Error Number =3D -2147217873
Native Error Number =3D 2601
Description =3D L'instruction a =E9t=E9 arr=EAt=E9e.
Source =3D Microsoft OLE DB Provider for SQL Server
SQL State =3D 01000
Error Number =3D -2147217873
Native Error Number =3D 3621
Requ=EAte ex=E9cut=E9e sur la base <SRV_SUISS> :
Texte de la requ=EAte : INSERT INTO OAS_LINKLINE
(Linkcode,CmpCode,DocCode,DocNum,DocLineNum,AcCode,ValueDoc,ValueDoc_dp,Lin=
eType,DebitCredit,Extref1,DueDate,Descr,ValDate,TaxCode1,TaxValue1,TaxValue=
1_dp,TaxLineCode,DocTaxTurn)
VALUES ( 'IS0831038181 ', 'ARVEL ', 'VFIN ', 'ARVEL8000002 ', '2 ',
'CG.Z.DEGRISON01.IN0622604.IN0622604.Z.Z.Z.Z ', '274.43 ', '2 ', '158
', '160 ', ' ', ' ', ' ', ' ', 'CHVZDO076 ', '20.86 ', '3 ', ' ', '0
' )
Nombre de param=E8tres :=3D0
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thumain Th.
Le Thu, 13 Nov 2008 17:14:11 +0100, a écrit:
Bonjour,
Je suis en train de faire un programme (jetable) qui charge les tables d'un ERP. Si j'ai une duplicate key, il me jette (normal) mais le message intercepter n'est pas top (ci-dessous)
Personne n'a une idée sur la facon de recuperer le message de la base, donc "Impossible d'insérer une ligne de clé en double dans l'objet 'dbo.OAS_LINKLINE' avec un index unique 'oas_linkline_index1'. " plutot que le roman ci-dessous ?
Sinon, je me ferais une p'tite methode pour parser le texte et recuperer la premiere "description" du message mais c'est rigolo que ca ne me renvoit pas juste la cause de l'erreur au lieu d'un pavé pareil.
Evidemment j'ai testé les variantes du sql.erreur, sql.meserreur etc...
Merci
Bonjour
Ce que nous faisons avec Oracle:
gnres=HExécuteRequêteSQL(Req,"gcORA",hRequêteSansCorrection,sOrdSql) nErr=HErreurInfo(hErrBase) SI nErr DANS (1400,1,2292) ALORS //null ou violation d'unique //002 2292 SELON nErr CAS 1: sErr=" enregistrement existe déjà" CAS 1400: sErr=" valeur obligatoire" CAS 2292: sErr=" possède des enregistrements liés" AUTRE CAS
FIN sChn=HErreurInfo(hErrMessageSystème) sChn1=ExtraitChaîne(ExtraitChaîne(sChn,2,"("),1,")") // "compte"."table"."champ" Erreur("Champ "+ExtraitChaîne(sChn1,6,"""")+" incorrect :"+sErr+"(ORA-"+nErr+")") // ExtraitChaîne(HErreurInfo(hErrMessageSystème),1,CR)) RENVOYER Faux FIN
-- TT
Le Thu, 13 Nov 2008 17:14:11 +0100, tjfromparis@gmail.com
<tjfromparis@gmail.com> a écrit:
Bonjour,
Je suis en train de faire un programme (jetable) qui charge les tables
d'un ERP.
Si j'ai une duplicate key, il me jette (normal) mais le message
intercepter n'est pas top (ci-dessous)
Personne n'a une idée sur la facon de recuperer le message de la base,
donc
"Impossible d'insérer une ligne de clé en double dans l'objet
'dbo.OAS_LINKLINE' avec un index unique 'oas_linkline_index1'. "
plutot que le roman ci-dessous ?
Sinon, je me ferais une p'tite methode pour parser le texte et
recuperer la premiere "description" du message mais c'est rigolo que
ca ne me renvoit pas juste la cause de l'erreur au lieu d'un pavé
pareil.
Evidemment j'ai testé les variantes du sql.erreur, sql.meserreur
etc...
Merci
Bonjour
Ce que nous faisons avec Oracle:
gnres=HExécuteRequêteSQL(Req,"gcORA",hRequêteSansCorrection,sOrdSql)
nErr=HErreurInfo(hErrBase)
SI nErr DANS (1400,1,2292) ALORS //null ou violation d'unique //002
2292
SELON nErr
CAS 1: sErr=" enregistrement existe déjà"
CAS 1400: sErr=" valeur obligatoire"
CAS 2292: sErr=" possède des enregistrements liés"
AUTRE CAS
FIN
sChn=HErreurInfo(hErrMessageSystème)
sChn1=ExtraitChaîne(ExtraitChaîne(sChn,2,"("),1,")") //
"compte"."table"."champ"
Erreur("Champ "+ExtraitChaîne(sChn1,6,"""")+" incorrect
:"+sErr+"(ORA-"+nErr+")")
// ExtraitChaîne(HErreurInfo(hErrMessageSystème),1,CR))
RENVOYER Faux
FIN
Je suis en train de faire un programme (jetable) qui charge les tables d'un ERP. Si j'ai une duplicate key, il me jette (normal) mais le message intercepter n'est pas top (ci-dessous)
Personne n'a une idée sur la facon de recuperer le message de la base, donc "Impossible d'insérer une ligne de clé en double dans l'objet 'dbo.OAS_LINKLINE' avec un index unique 'oas_linkline_index1'. " plutot que le roman ci-dessous ?
Sinon, je me ferais une p'tite methode pour parser le texte et recuperer la premiere "description" du message mais c'est rigolo que ca ne me renvoit pas juste la cause de l'erreur au lieu d'un pavé pareil.
Evidemment j'ai testé les variantes du sql.erreur, sql.meserreur etc...
Merci
Bonjour
Ce que nous faisons avec Oracle:
gnres=HExécuteRequêteSQL(Req,"gcORA",hRequêteSansCorrection,sOrdSql) nErr=HErreurInfo(hErrBase) SI nErr DANS (1400,1,2292) ALORS //null ou violation d'unique //002 2292 SELON nErr CAS 1: sErr=" enregistrement existe déjà" CAS 1400: sErr=" valeur obligatoire" CAS 2292: sErr=" possède des enregistrements liés" AUTRE CAS
FIN sChn=HErreurInfo(hErrMessageSystème) sChn1=ExtraitChaîne(ExtraitChaîne(sChn,2,"("),1,")") // "compte"."table"."champ" Erreur("Champ "+ExtraitChaîne(sChn1,6,"""")+" incorrect :"+sErr+"(ORA-"+nErr+")") // ExtraitChaîne(HErreurInfo(hErrMessageSystème),1,CR)) RENVOYER Faux FIN
-- TT
tjfromparis
Ouaip mais suis plus à l'aise sur oracle que sur SQL (et j'utilise l'access alter-natif : donc pas ce genre de pb)
vais me parser les messages d'erreurs pour faire un premier tri sur les erreurs les plus courantes et j'utiliserais le long barratin pour les erreurs "imprevues"
merci
Ouaip mais suis plus à l'aise sur oracle que sur SQL (et j'utilise
l'access alter-natif : donc pas ce genre de pb)
vais me parser les messages d'erreurs pour faire un premier tri sur
les erreurs les plus courantes et j'utiliserais le long barratin pour
les erreurs "imprevues"
Ouaip mais suis plus à l'aise sur oracle que sur SQL (et j'utilise l'access alter-natif : donc pas ce genre de pb)
vais me parser les messages d'erreurs pour faire un premier tri sur les erreurs les plus courantes et j'utiliserais le long barratin pour les erreurs "imprevues"