Auteur Sujet: [Résolu] Insertion d'événements  (Lu 7183 fois)

plus minus reset

0 Membres et 1 Invité sur ce sujet

Hors ligne emilise

  • Expert
  • ****
  • Messages: 104
[Résolu] Insertion d'événements
« le: 02 Avril 2008 à 14:03:21 »
Bonjour,

J'avais jusqu'à présent plusieurs façons de saisir les "titres" comme "Sieur de X", "Seigneur de Y". Lorsque c'était assez court, je le mettais dans le champ suffixe, lorsque c'était trop long, je créais un événement Titre.
J'aimerais maintenant harmoniser ma base et basculer tous les suffixes en événements Titre. J'ai essayé en SQL la requête suivante :

INSERT INTO evenements_ind
(ev_ind_clef, ev_ind_kle_fiche, ev_ind_kle_dossier, ev_ind_type, ev_ind_description)
SELECT
  (max(EV_IND_CLEF) + 1),
  5455,
  3,
  'TITL',
  'test'
FROM
  EVENEMENTS_IND

pour tester l'insertion d'un Titre 'test' sur l'individu 5455.

Le problème c'est que j'obtiens l'erreur : "Violation d'accès à l'adresse 0CT6B088 dans le module DLL_BOA.dll. Ecriture de l'adresse 00000000." Je peux ensuite fermer le BOA sans qu'il me demande si je souhaite valider les modifs.
Pourtant, l'événement est bien inséré dans ma fiche!

Donc ma question est : est-il sûr de faire ce genre de manip avec la BOA ? Je ne vois nulle part de sujets avec des INSERT... Même si l'insertion est bien faite, l'erreur que j'obtiens ne peut-elle pas corrompre des chose invisibles pour moi mais qui finiront pas tout faire planter un jour ?
Et surtout, problème principal, comment puis-je avoir les noms des séquences pour la clé primaire ?

Merci
« Modifié: 02 Avril 2008 à 19:27:21 par emilise »
Émilise - Ancestro v 1352
 

Hors ligne DDdeBerdeux

Insertion d'événements
« Réponse #1 le: 02 Avril 2008 à 14:58:41 »
Bonjour,
Première réponse concernant le BOA:
Si votre requête doit retourner des enregistrements (requêtes SELECT), vous devez l'exécuter en cliquant sur le bouton "Exécuter requête".
Si elle ne retourne rien (requêtes INSERT, UPDATE, EXECUTE), vous devez l'exécuter en cliquant sur "Exécuter procédure".

Pour votre requête INSERT, il ne faut pas définir la clef dans les tables EVENEMENTS. Cette clef est automatiquement générée par un trigger Before insert, qui utilise un compteur appelé générateur qui s'incrémente automatiquement. Si vous définissez  vous même ce code, le générateur n'est pas mis à jour, et il risque d'allouer ultérieurement une clef identique à celle que vous avez "forcée", provoquant alors une violation de clé primaire.
Si vous voulez connaître la clé de l'enregistrement avant de l'insérer, il faut par une première requête interroger le générateur en l'incrémentant de 1, puis ensuite allouer ce code obtenu dans votre INSERT.
Une extension de la syntaxe de INSERT assez récente de Firebird 2.0 permet de retourner la clef. Mais je ne pense pas que le BOA autorise cette extension. Il faut utiliser des outils du type IBExpert assez récent pour celà.
A+
André
Une application pleinement satisfaisante est toujours complétée par une mise à jour buggée. (Loi des Mises à Jour)
 

Hors ligne Tophe3860

Insertion d'événements
« Réponse #2 le: 02 Avril 2008 à 15:47:57 »
Emilise,

Si j'ai bien saisi, actuellement, vous avez entré des 'sieur de X' et 'seigneur de X' dans des événements 'titre' ou dans les suffixes, selon leur longueur.
Vous faites le choix de basculer ce qui est intégré dans 'suffixes' vers 'surnom'.

Pourquoi pas, mais...
Quitte à harmoniser, pourquoi ne pas choisir de basculer tous ces titres 'suffixes' dans de vrais événements 'titres'...  :roll: :wink:
Christophe Pensez [résolu] et trucs & astuces : un ancestrologie pour tous, tous pour un ancestrologie!
 

Hors ligne emilise

  • Expert
  • ****
  • Messages: 104
Insertion d'événements
« Réponse #3 le: 02 Avril 2008 à 16:01:01 »
DDdeBordeux :
Je vais essayer donc de supprimer la clé de ma requête d'insertion, et de faire Exécuter procédure au lieu de Exécuter requête

Tophe3860 :
Oui pardon, c'est mon erreur, je veux effectivement basculer tous les suffixes en événements Titre et non en surnoms.
Émilise - Ancestro v 1352
 

Hors ligne emilise

  • Expert
  • ****
  • Messages: 104
[Résolu] Insertion d'événements
« Réponse #4 le: 02 Avril 2008 à 19:28:34 »
Voilà, ça marche. Pour les gens qui se poseraient la même question, j'ai utilisé la requête

insert into evenements_ind
(ev_ind_kle_fiche, ev_ind_kle_dossier, ev_ind_type, ev_ind_description)
SELECT
   CLE_FICHE , 3, 'TITL',  SUFFIXE
FROM
 INDIVIDU
where suffixe != ''
Émilise - Ancestro v 1352