begin process at 2010 02 10 08:05:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Bases de données

 > 

[Interbase6] Problème de triggers


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

[Interbase6] Problème de triggers

lundi 7 mars 2005 à 12:21:53 | [Interbase6] Problème de triggers

emeraudes

bonjour,

j'utilise Interbase 6 et je voudrais savoir comment faire pour faire un trigger de suppression.
voila j'explique
j'ai 2 tables "lot" et "produit"
dans mon application delphi je supprime le produit dans lot
je voudrais apres avoir supprimer ce produit de ma table "lot" , le supprimer de ma table "produit" avec un trigger
comment dois je faire?

avec Sql Server, ma suppression serai dans une table créer par SQl Serveur appelé 'deleted'
est ce le meme fonctionnement avec Interbase? serait ce pas 'old'?
merci de votre aide

Cordialement


>>>> "Le génie n'existe pas sans un grain de folie"



mercredi 9 mars 2005 à 12:31:29 | Re : [Interbase6] Problème de triggers

vincentstryckmans

Utilise l'intégrité référentielle entre tes deux tables et ajoute un event on delete dans ta table lot de telle manière que le record associé dans la table produit soit également effacer.

Personnellement, je me sert des triggers à l'insertion de nouveau record en association avec un generator.
Voici un exemple de code sql :
CREATE TABLE "SMS"
(
  "ID"    INTEGER NOT NULL,
  "IDINCIDENT"    INTEGER,
  "IDAVIS"    INTEGER,
  "TEXTE_SMS"    VARCHAR(1000),
  "DATE_SMS"    DATE,
  "PAS_LU"    "LOGICAL",
  "EMETTEUR"    SMALLINT,
  "DESTINATAIRE"    SMALLINT,
 PRIMARY KEY ("ID")
);
SET TERM ^ ;


CREATE GENERATOR gen_sms;

SET GENERATOR gen_sms to

CREATE TRIGGER "ID_SMS" FOR "SMS"
ACTIVE BEFORE INSERT POSITION 0
as
begin
   if (new.id is null) then
       new.id = gen_id(gen_sms,1);
end

C'est une table que j'utilise pour que les utilisateurs de mon applicationn puisse s'envoyer des messages, comme un sms.

Avec un composant TIBDataset, tu écris le script SELECTSQL et puis tu génères automatiquement le code de modif, refresh et effacement.

Voici ce que cela donne :
DELETESQL =
delete from SMS
where
  ID = :OLD_ID

INSERTSQL =
insert into SMS
  (CREATEUR_AVIS, CREATEUR_INCIDENT, DATE_SMS, ID, IDAVIS, IDINCIDENT,
   PAS_LU, TEXTE_SMS)
values
  (:CREATEUR_AVIS, :CREATEUR_INCIDENT, :DATE_SMS, :ID, :IDAVIS, :IDINCIDENT,
   :PAS_LU, :TEXTE_SMS)

MODIFYSQL =
update SMS
set
  CREATEUR_AVIS = :CREATEUR_AVIS,
  CREATEUR_INCIDENT = :CREATEUR_INCIDENT,
  DATE_SMS = :DATE_SMS,
  ID = :ID,
  IDAVIS = :IDAVIS,
  IDINCIDENT = :IDINCIDENT,
  PAS_LU = :PAS_LU,
  TEXTE_SMS = :TEXTE_SMS
where
  ID = :OLD_ID

Avec param.parabyname('ID') := le ID du record que je veux manipuler tu signales ou TIBDATASET quel record doit être manipuler puis les méthodes insert, edit et delete feront le reste pour toi.

J'espère avoir été clair n'hésite pas si tu veux plus d'explications.

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
mercredi 9 mars 2005 à 17:24:01 | Re : [Interbase6] Problème de triggers

emeraudes

merci de ce code. je connaissai deja ce code avec generator mais je n'arrive pas a le faire fonctionner. dans ma requete (j'utilise un IBQuery) comment dois je faire pour  que le generator fonctionne?
par ex

query.SQL.Text:='Insert into lot where (??, 'bonjour')
table lot (nolot, libelle)

comment dois je faire? je dois écrire koi?
je n'est pas tre bien compri ou mettre ca :
param.parabyname('ID') := le ID ??
ou dois je le mettre?


>>>> "Le génie n'existe pas sans un grain de folie"



vendredi 11 mars 2005 à 11:57:59 | Re : [Interbase6] Problème de triggers

vincentstryckmans

Tu ne dois pas utiliser un IBQuery mais IBDataset.

IBQuery ne permet que de lire la requête écrite dans sa propriété SQL.

IBDataset permet de manipuler la requête écrite dans SELECTSQL

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans


Cette discussion est classée dans : problème, table, produit, lot, interbase6


Répondre à ce message

Sujets en rapport avec ce message

!!!!!!!!!!problème de base de données!!!!!!!!!! [ par jejestyle ] je voudrait faire un programme me permettant de calculer ma moyenne automatiquement mais j'ai un problème.Comment fait on pour mettre deux table de do Insertion de donnée.... [ par beos2 ] salutJ'ai un gros problème depuis des semaines voir moins et personne n'arrive à trouver une solution....je tente de faire une insertion, mais j'ai to problème développement stage [ par Rankin ] Salut, je viens de commencer un stage où je dois développer une application de gestion, et là j'ai (déjà) un problème. Comment utilise-t-on une DBComb Problème de base de donnée avec images [ par corole3 ] Bonsoir, j'ai une table paradox qui a un type ftBlob. Si je mets une trentaine de lignes dans cette table, elle me fait environ quelques ko. Si je m Lenteur paradox après modification d'une table en réseau [ par adrien5 ] Bonjour, Je fais appel à votre aide pour le problème suivant : J'ai une application delphi7 (DB paradox) qui tourne en réseau (en local, aucun problèm TTable: copier une table dans une autre [ par juan ] Bonjour tous, mon problème aujourd'hui, c'est que j'ai une table Table1 qui est filtrée, j'ai créé une deuxième table Table2 sans aucun enregistrement Probleme DELPHI/DBASE [ par SARRAZIN TEC ] Bonjour,J'aurais besoin d'aide pour lire une table DBASE 4 non reconnu. En fait un logiciel développé sous WINDEV génére des tables DBASE (4 au dire d Problème avec QReport [ par codial ] Bonsoir, j'ai un problème avec un état QReport. J'ai une table que je balaie à l'aide d'un bouton pour afficher les données dans des listview et e Problème SQL et date [ par wisdeco81 ] Bonjour,  Sous Delphi je dois faire une recherche sur une table paradox.  Le champ "DateCtrl" est de type Date.  Voici la requete demandée :SELECT * F Problème pour vider une table [ par zastas ] Bonjour,je suis un debutant en delphipour vier ma table (tclientdataset), je fais comme cela :table.Active := false;if MessageDlg('voulez-vous vraimen


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,312 sec (3)

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