Newsgroup: it.comp.lang.delphi
Titolo: interbase Generators + D6

Seguendo il consiglio di AS ho cercato di utilizzare i generator all'interno 
di un db Interbase, ma con risultati nulli sia all'interno della IB console 
che della mia applicazione.
Il tutto seguendo la documentazione e gli esempi che si trovano in rete, che 
poi sono in sostanza i medesimi.
Qualcuno si è imbattuto in simili problemi ? Come li ha risolti ?
Grazie Carlo 

 ha scritto nel messaggio

se il tuo scopo e' creare un contatore , unitamente ad un Generator ti serve
un Trigger oppure una StoredProcedure.
se usi il Trigger quando crei un nuovo record usando IBConsole o IBExpert
il contatore si incrementera' da solo, nel caso della StoredProcedure no.
puoi usare i Trigger se utilizzi i Componenti Interbase,
le StoredProcedure (componente SQLStoredProcedure), invece se usi componenti
dbExpress, dovrei inoltre dichiarare il nome della StoredProcedure ed usare 
l'evento
Before Post associato al ClientDataSet (pannello Data Access)
es: nel tuo Datamodule
 //Elenco Stored Procedure usate come contatore
 SQLSP_Filtri.StoredProcName:='INC_FILTRI';
// evento Before ost associato al ClientDataSet
procedure Tfrm_Dati.CDS_FiltriBeforePost(DataSet: TDataSet);
begin
 if CDS_Filtri.State=dsInsert then
 begin
  SQLSP_Filtri.ExecProc;
  CDS_Filtri.FieldByName('CONTATORE').AsInteger:=SQLSP_Filtri.Params[0].Value;
 end;
end;

[...]Qualcuno si è imbattuto in simili problemi ? Come li ha risolti ?
Se li citassi, ti si potrebbe rispondere.

end;
Complimenti per la chiarezza! possiamo solo aggiungere la parte server
generatore
CREATE GENERATOR CONTATORE;
SET GENERATOR IDx TO 0
 
questa la stored procedure che richiama il generatore
CREATE PROCEDURE INC_FILTRI
RETURNS (
    ID INTEGER)
AS
BEGIN
  ID = GEN_ID(CONTATORE,1);
END
Mario
--- posted by geoForum on 
http://www.delphiedintorni.it

> Qualcuno si è imbattuto in simili problemi ? Come li ha risolti ?
Hai di nuovo sbagliato ng.
Questo è un ng di sviluppatori e non di utenti finali.
AS

 ha scritto nel messaggio 
news:1137577925....@z14g2000cwz.googlegroups.com...


 ha scritto nel messaggio 
news:hl5rs1hjm4tllpq40...@4ax.com...


 io e molti altri non piangeremo.
Io parlo x me e non per "molti altri". Se i "molti altri" hanno
qualcosa da dire, lo fanno loro stessi. Chi da a TE il diritto di
parlare per conto terzi? Hai un mandato da parte loro a fare l'avvocato
difensore?
Riguardo te, se non piangi risparmi fazzoletti di carta: buon x te.
Ricambio i cordiali saluti.
Alberto Salvati

 ha scritto nel messaggio 
news:1137663729.3...@g47g2000cwa.googlegroups.com...


Ok, Carlo.
Vedi se 'sto link puo' esserti utile:
http://www.devspy.com/public/Art/Lang/Art.aspx?lang=13&id=00017
AS
www.devspy.com

 ha scritto nel messaggio 
news:1137665294.5...@g43g2000cwa.googlegroups.com...


 AS
Complimenti Alberto per l'articolo, non sapevo di questa tua pubblicazione
:)
Se volessi deciderti di continuare a scriverne altri, un posto sul website
del ng come articolista non te lo leva nessuno ;-)
Ciao!
-- 
Morde. 
ICLDweb: 
http://www2.samatel.com/icld/

Mo non esagerare...
Da un lato mi farebbe piacere, anche se non ne so abbastanza di qlc
argomento preciso per una trattazione dettagliata.
Per contro, il problema è sempre il maledetto TEMPO...
AS

 ha scritto nel messaggio 
news:1137665294.5...@g43g2000cwa.googlegroups.com...


> Veramente un articolo interessante, chiaro e pure in italiano.
tnx.
AS

creava l'inceppamento.
E' del tutto indifferente, non è questo che crea il problema (che non
ho ancora capito quale sia).  Con IB, generalmente il trigger befor
insert ha una forma: 
begin
  if (new.campo_incrementante is NULL) then
    new.campo_incrementante = gen_id(generatore, 1);
end
Questo codice funziona perfettamente.