|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Salut je débute en forms 6i
J'ai réalisé un simple formulaire et je positionne les variables insertion autorisée à oui ainsi que Mise à Jour. Pourtant lorsque je veux faire un commit, je tombe sur une erreur oracle: Insert impossible. J'ai les droits du dba et je peux insérer à loisir via sqlplus. Je suis sous forms 6i et oracle 9i2. Any Help appreciated. Thanks. |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Le problème vient des clés primaires.
En effet quand je fais un commit sur le bloc, forms essaie d'insérer les enregistrements déjà existants au lieu de faire une simple mise à jour .D'où une erreur oracle car la contrainte unique sur la clé primaire n'est pas respectée. Comment faire pour contourner ce problème? |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 448 ![]() |
Forms gère tout seul le fait de savoir si c'est un INSERT ou un UPDATE à faire.
Pour updater une ligne qui existe déjà, il faut la ramener de la base par un query. C'est bien ce que tu fais ? Pour avoir l'erreur exacte : fais CTRL+F1 (pour avoir la liste des touches) et regarde le "Afficher erreur". Chez moi c'est SHIFT+F1. |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Oui c'est bien ce que je fais.
Je récupère tous les enregistrements via un curseur de la base de données et je peuple mon tableau . Mais quand je fais un commit, forms s'amuse à vouloir faire un insert au lieu de faire un update sur les champs déjà existants. Pour info ce problème n'apparait pas sur les autres formulaires que j'ai développés. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
L'erreur est forms 40-508 : insertion Insert oracle impossible.
En effet Forms veut insérer les champs déjà existants au lieu de les mettre à jour d'où erreur sur les clés primaires qui doivent être uniques; Comment débloquer ce problème? |
|
|
00
|
|
|
#6 | |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Citation:
Moi je peuple mon tableau d'enregistrements par un curseur qui récupère ses informations de la table. Est ce que c'est pareil? |
|
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 448 ![]() |
Citation:
Il faut baser ton bloc sur ta table et faire un query de ton bloc. |
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Comment ça marche les query?
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Normalement forms récupère lui-même les champs de la table surlaquelle est basé le bloc .Là il ne veut pas.
Pourtant je passe par l'assistant. ????, |
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 448 ![]() |
Citation:
1/ Manuellement : Tu vas sur ton bloc, tu fais F7 (Menu Edition - Interroger - Entrer), tu mets les conditions que tu veux dans les différents champs (rien si tu veux tout), puis tu fais F8 (Menu Edition - Interroger - Lire). 2/ Automatiquement (ex a l'ouverture de l'écran) dans le trigger WHEN NEW FORM INSTANCE : Code :
|
|||
|
|
00
|
|
|
#11 | |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 23 ![]() |
ok Thanks a lot.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com