Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [Delphi] DBGRID

  1. #1

    [Delphi] DBGRID

    Salve come faccio a farmi tornare la riga selezionata da un dbgrid? ringraziamenti anticipati 1750
    Un salustro a tutti

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il controllo DBGrid è associato ad un DataSource: questo significa che la selezione di una riga sulla griglia corrisponde al posizionamento sul record corrispondente nel DataSet (tabella, query o altro) associato tramite il componente DataSource.

    Pertanto, per sapere dove sei posizionato, ti basta osservare il record corrente del DataSet e ispezionarne i valori dei campi senza bisogno di identificare la riga selezionata direttamente sulla griglia.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Prima di tutto ti ringrazio per la tua conculenza e dopo di che avrei da chiederti dei chiarimenti sulla seguente frase:
    ***********************************
    "ti basta osservare il record corrente del DataSet e ispezionarne i valori dei campi senza bisogno di identificare la riga selezionata direttamente sulla griglia."
    ***********************************

    in che senso osservare il record?.

    Perdona l'ignoranza ma in Delphi sono un pivello

    Grazie ancora 1750
    Un salustro a tutti

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il controllo DBGrid rispecchia esattamente la condizione del DataSet (tabella, query o altro componente) a cui è collegato attraverso un componente DataSource.

    Il DataSet permette di spostarsi all'interno dei record oppure di posizionarsi su un record specifico richiamando alcuni metodi di cui è dotato il componente stesso, ad esempio
    codice:
    Table1.First
    ;
    si posiziona sul primo record della tabella.
    codice:
    Table1.Next
    si posiziona sul record successivo a quello corrente.

    Questi metodi sono gli stessi che vengono richiamati dalla DBGrid quando l'utente fa clic per posizionarsi su una riga ben precisa che poi corrisponde ad un preciso record della tabella a cui fa riferimento.

    Pertanto, per conoscere il valore di un campo per il record correntemente selezionato, non è necessario ispezionare le celle della griglia, ma sapendo che la griglia è collegata ad una tabella e che quella tabella si posiziona sul record indicato sulla griglia automaticamente, basta leggere il valore del campo per il record corrente direttamente dalla tabella; ad esempio
    codice:
    Table1.FieldByName('COGNOME').AsString
    restituisce il contenuto del campo COGNOME della tabella relativamente al record selezionato richiamando i metodi del componente stesso oppure facendo clic sulla DBGrid (o su un altro DataControl associato, come il DBNavigator).

    E' più chiaro?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Grazie mille alka , ora è molto piu chiaro.
    A bun rendere cioxxx
    Un salustro a tutti

  6. #6
    Ciao alka, grazie a te sono riuscito a tirarmi fuori la stringa selezionata, solo che ora ho un'altro problema e magari mi chiedevo se avevi la soluzione anche a questo problema:

    *****************
    procedure TForm2.caricaTabella(newKeySql:string);
    var sqlS:=string;
    begin
    sqlS:='SELECT * FROM SECTAB WHERE MATRICOLA ='+''''+newKeySql+'''';
    Query1.SQL.Add(sqlS);
    end;

    *****************
    PERCHE' SU QUESTO CODICE IN RUNTIME MI BECCO L'ERRORE CHE TI HO ALLEGATO?.
    Ringraziamenti anticipati 1750
    Immagini allegate Immagini allegate
    Un salustro a tutti

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Controlla il numero di apici che hai utilizzato...

    I valori letterali di tipo stringa (testi) nello statement SQL vanno racchiusi tra apici singoli (un solo apice singolo all'inizio e alla fine).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Hai perpettamente raggione, il mio problema è che non riesco a concatenare la stringa, mi spiego con un'esmpio:

    Se ho una variabile di questo tipo

    var valore:string;

    e la setto in questo modo dando sue apici all'inizio e alla fine

    valore:='SELECT * FROM TABELLA WHERE CAMPO='

    a questo punto come faccio per concatenare gli apici all'interno della stringa in modo che il valore della where condicion risulti tra apici?

    valore:='SELECT * FROM TABELLA WHERE CAMPO='+ variabile.

    Grazie ancora
    Un salustro a tutti

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Per rappresentare un'apice all'interno di una stringa puoi digitare due apici consecutivi:
    codice:
    Text := 'Questa stringa contiene ''apici''';
    Ciao!
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.