Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34

Discussione: [Delphi6] DBNavigator

  1. #1

    [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.


  2. #2
    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?

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    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"?

  5. #5
    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.

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

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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).

    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?

    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
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    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"!!

  9. #9
    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 ??


  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.