HTML.it è il sito italiano del web publishing

[Delphi6] DBNavigator



scegli un altro forum
  Pagine (3): [ 1   2   3   > ]  Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ:

MSN:

Skype:


[Delphi6] DBNavigator
Ciao,
volevo sapere come è possibile sapere che l'utente ha cliccato il tasto '+' (cioè quello di aggiunta di un nuovo record all'interno del DBgrid) sul DBNavigator....
Non trovo un evento che possa soddisfare questo.... così riesco a collegare le varie chiavi primarie all'interno del database Access.
grazie!!!!!!!
P.S. In rete non ho trovato molte informazioni.

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 13:17
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Leggendo la domanda di un altro utente, mi sono chiarito le idee:

http://forum.html.it/forum/showthread/t-597567.html

però mi rimane un dubbio.
Quando io vado a cliccare ' + ' mi crea un nuovo record. Se non inserisco valori, il BeforePost, capisce che non ho inserito niente, quindi si blocca tutto.
Ma nel database, questo record viene aggiunto????
oppure no?

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 13:34
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
alka
Moderatore di Programmazione e CGI-Perl



Registrato il: Oct 2001

Provenienza: Reggio Emilia

Messaggi: 23400


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da DvdDelphi
volevo sapere come è possibile sapere che l'utente ha cliccato il tasto '+' (cioè quello di aggiunta di un nuovo record all'interno del DBgrid) sul DBNavigator....


A cosa ti serve? In tanti anni di programmazione, non ho *mai* avuto bisogno di sapere quando l'utente preme quel tasto, perché in genere tale azione avvia una operazione di Insert sul DataSet collegato (es. una tabella), quindi il fatto che tu cerchi un evento del genere denota che stai utilizzando il controllo in modo errato.


__________________
MARCO BREVEGLIERI
Sviluppo Software e Web
Consulenza e corsi di programmazione

http://www.marco.breveglieri.name

Segnala ad un moderatore | IP: Collegato | Permalink

alka è offline Old Post 18-06-2012 13:34
Clicca qui per vedere il profilo dell'utente alka Clicca qui per inviare all'utente alka un messaggio privato Visita l'homepage dell'utente alka Visualizza ulteriori messaggi scritti dall'utente alka Aggiungi l'utente alka alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Hai assolutamente ragione.
Mi potresti spiegare meglio il BeforePost?
quando inserisco un nuovo record, ed è completamente vuoto, quando do il click per il post, mi da errore che è vuoto.
In questo caso annulla l'operazione di "aggiunta nuovo record" automaticamente oppure devo dire io di tornare nel "passato"?

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 13:41
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Nettuno95
Utente di HTML.it



Registrato il: May 2012

Provenienza: Milano

Messaggi: 93


ICQ :

MSN :

Skype : nettuno_1995


Il "Tasto" +, come anche tutti gli altri, sono solo dei wrapper (non credo che sia la definizione esatta, ma rende l'idea) su i rispettivi metodi del dataset associato per mezzo del Datasource, infatti nel componente Navigator i 2 metodi associati al possibile click (OnBeforeAction, OnClick), riportano una variabile di tipo TNavigateBtn definita nella unit DBCtrls, la quale interrogata ti dice quale bottone hai premuto; ma tutto questo in teoria a te non serve a molto se, come hai detto, devi inizializzare le chiavi del nuovo record, la tua attenzione si deve spostare sul dataset interrogato, direi che l'evento "OnNewRecord" è il posto giusto, dopo tutto questo io sono sempre più convinto che c'e' bisogno di una netta distinzione tra la parte "base dati" e la parte visuale del programma in quanto cosa succede se devi inserire i record in 7 punti diversi del programma ? riscrivi sempre lo stesso codice su ogni navigator?
N.

Segnala ad un moderatore | IP: Collegato | Permalink

Nettuno95 è offline Old Post 18-06-2012 13:52
Clicca qui per vedere il profilo dell'utente Nettuno95 Clicca qui per inviare all'utente Nettuno95 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Nettuno95 Aggiungi l'utente Nettuno95 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Ok,
quindi se io vado ad inserire un nuovo record cliccando il ' + ', si scatena l'evento OnNewRecord???????????

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 14:00
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
alka
Moderatore di Programmazione e CGI-Perl



Registrato il: Oct 2001

Provenienza: Reggio Emilia

Messaggi: 23400


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da DvdDelphi
Mi potresti spiegare meglio il BeforePost?


L'evento BeforePost viene invocato prima di salvare un record su DB.

In quel contesto, generalmente si provvede a verificare che il record sia valido con regole personalizzate, laddove Delphi non arriva con quelle predefinite (ad esempio, campo non nullo).

Citazione:
Originariamente inviato da DvdDelphi
quando inserisco un nuovo record, ed è completamente vuoto, quando do il click per il post, mi da errore che è vuoto.

Mi pare normale.
Perché dovresti salvare un record senza alcun campo compilato?

Citazione:
Originariamente inviato da DvdDelphi
In questo caso annulla l'operazione di "aggiunta nuovo record" automaticamente oppure devo dire io di tornare nel "passato"?

No, quando il "post" non va a buon fine, l'operazione di inserimento/aggiornamento rimane "pendente": a quel punto, puoi ritentare il salvataggio, oppure annullare l'operazione.

Nell'evento OnNewRecord del DataSet puoi provvedere a inizializzare i campi del nuovo record che vai a inserire con dei valori predefiniti.


__________________
MARCO BREVEGLIERI
Sviluppo Software e Web
Consulenza e corsi di programmazione

http://www.marco.breveglieri.name

Segnala ad un moderatore | IP: Collegato | Permalink

alka è offline Old Post 18-06-2012 14:04
Clicca qui per vedere il profilo dell'utente alka Clicca qui per inviare all'utente alka un messaggio privato Visita l'homepage dell'utente alka Visualizza ulteriori messaggi scritti dall'utente alka Aggiungi l'utente alka alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Citazione:
Nell'evento OnNewRecord del DataSet puoi provvedere a inizializzare i campi del nuovo record che vai a inserire con dei valori predefiniti.


quindi diciamo che è meglio utilizzare il BeforePost.... perchè i dati che vengono inseriti non sono predefiniti o "statici"!!

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 14:08
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Nettuno95
Utente di HTML.it



Registrato il: May 2012

Provenienza: Milano

Messaggi: 93


ICQ :

MSN :

Skype : nettuno_1995


Citazione:
Originariamente inviato da DvdDelphi
quindi diciamo che è meglio utilizzare il BeforePost.... perchè i dati che vengono inseriti non sono predefiniti o "statici"!!


E LE CHIAVI PRIMARIE ?????
Le calcoli prima del post ??

Segnala ad un moderatore | IP: Collegato | Permalink

Nettuno95 è offline Old Post 18-06-2012 14:11
Clicca qui per vedere il profilo dell'utente Nettuno95 Clicca qui per inviare all'utente Nettuno95 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Nettuno95 Aggiungi l'utente Nettuno95 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
alka
Moderatore di Programmazione e CGI-Perl



Registrato il: Oct 2001

Provenienza: Reggio Emilia

Messaggi: 23400


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da DvdDelphi
quindi diciamo che è meglio utilizzare il BeforePost.... perchè i dati che vengono inseriti non sono predefiniti o "statici"!!


No, non esiste nessun "meglio utilizzare".

L'evento OnBeforePost ha uno scopo, l'evento OnNewRecord ne ha un altro, e ti sono stati illustrati, per cui in base al problema specifico va usato o l'uno o l'altro.


__________________
MARCO BREVEGLIERI
Sviluppo Software e Web
Consulenza e corsi di programmazione

http://www.marco.breveglieri.name

Segnala ad un moderatore | IP: Collegato | Permalink

alka è offline Old Post 18-06-2012 14:14
Clicca qui per vedere il profilo dell'utente alka Clicca qui per inviare all'utente alka un messaggio privato Visita l'homepage dell'utente alka Visualizza ulteriori messaggi scritti dall'utente alka Aggiungi l'utente alka alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Si certo!!!
Il "migliore" nel senso che era più consono a quello che sto facendo!!!

Grazie mille!!!!

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 14:16
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Citazione:
E LE CHIAVI PRIMARIE ????? Le calcoli prima del post ??


Certo!!! ho fatto una unit dove mi passa ogni volta i valori degli ID!!!!


comunque adesso io ho postato questo codice:
codice:
if (AQ1.FieldByName('MATRICOLA').AsString = '') then
begin 
  showmessage('inserire matricola');
  abort;    
  exit;   
end;


così dovrebbe annullare l'inserimento del nuovo record....

Nell'evento BeforePost!!

Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 14:30
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
alka
Moderatore di Programmazione e CGI-Perl



Registrato il: Oct 2001

Provenienza: Reggio Emilia

Messaggi: 23400


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da DvdDelphi
comunque adesso io ho postato questo codice:
[...]
così dovrebbe annullare l'inserimento del nuovo record....
Nell'evento BeforePost!!


Oh, finalmente una cosa che sembra formalmente corretta.


__________________
MARCO BREVEGLIERI
Sviluppo Software e Web
Consulenza e corsi di programmazione

http://www.marco.breveglieri.name

Segnala ad un moderatore | IP: Collegato | Permalink

alka è offline Old Post 18-06-2012 14:55
Clicca qui per vedere il profilo dell'utente alka Clicca qui per inviare all'utente alka un messaggio privato Visita l'homepage dell'utente alka Visualizza ulteriori messaggi scritti dall'utente alka Aggiungi l'utente alka alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
DvdDelphi
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 56


ICQ :

MSN :

Skype :


Segnala ad un moderatore | IP: Collegato | Permalink

DvdDelphi è offline Old Post 18-06-2012 15:03
Clicca qui per vedere il profilo dell'utente DvdDelphi Clicca qui per inviare all'utente DvdDelphi un messaggio privato Visualizza ulteriori messaggi scritti dall'utente DvdDelphi Aggiungi l'utente DvdDelphi alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Nettuno95
Utente di HTML.it



Registrato il: May 2012

Provenienza: Milano

Messaggi: 93


ICQ :

MSN :

Skype : nettuno_1995


Citazione:
Originariamente inviato da DvdDelphi
Certo!!! ho fatto una unit dove mi passa ogni volta i valori degli ID!!!!


comunque adesso io ho postato questo codice:
codice:
if (AQ1.FieldByName('MATRICOLA').AsString = '') then
begin 
  showmessage('inserire matricola');
  abort;    
  exit;   
end;


così dovrebbe annullare l'inserimento del nuovo record....

Nell'evento BeforePost!!


Dunque sino a che l'utente non invoca il metodo post il record rimane orfano ?
Un classico esempio che mi viene in mente è la fattura in quanto è composta da una "testa" ed un corpo multirecord in relazione con la testa, se non creo le chiavi primarie nella testa al momento del NewRecord non posso inserire le righe di corpo sino a che non salvo l'intestazione, in quanto non conosco i riferimenti? mmm mi sembra un po' forzata come cosa, cmq forse nel caso di access ed uso su singola tabella con un unica transazione la cosa è fattibile, ma il tutto lo vedo molto poco scalabile su un DBMS

PS: non viene annullato l'inserimento, ma viene "abortito" il metodo POST
N

Segnala ad un moderatore | IP: Collegato | Permalink

Nettuno95 è offline Old Post 18-06-2012 15:22
Clicca qui per vedere il profilo dell'utente Nettuno95 Clicca qui per inviare all'utente Nettuno95 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Nettuno95 Aggiungi l'utente Nettuno95 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 12:23.     

  Pagine (3): [ 1   2   3   > ]  Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca