Newsgroup: it.comp.lang.delphi
Titolo: selezione da dbgrid

salve a tutti, premetto che sono nuovo di delphi.
Io ho un semplicissimo db in mysql, composto da una tabella Contatti
(nome, cognome, indirizzo).
Ho una form per l'inserimento dei contatti e una per la ricerca.
Nella form per la ricerca ho gia impostato la query, il cui risultato mi
viene visualizzato in una dbgrid.
Domanda:Effettuata la ricerca e selezionando una riga da dbgrid e
cliccando , come faccio a far aprire una form con i dati del record
rappresentati sulla riga del dbgrid?
--- posted by geoForum on 
http://www.delphiedintorni.it

PER LA RIGA SELEZIONATA usa SelectedRows
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  s: string;
begin
  if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
      for i:=0 to DBGrid1.SelectedRows.Count-1 do
      begin
        GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
        for j := 0 to FieldCount-1 do
        begin
          if (j>0) then s:=s+', ';
          s:=s+Fields[j].AsString;
        end;
        Listbox1.Items.Add(s);
        s:= '';
      end;
end;
PER SCORRERE TUTTA LA GRIGLIA:
DBGrid1.DataSource.DataSet.First;
Repeat
    for j := 0 to DBGrid1.FieldCount-1 do
        begin
          s:=DBGrid1.Fields[j].AsString;
          showmessage(s);
        end;
        if DBGrid1.DataSource.DataSet.Eof = false then 
                       DBGrid1.DataSource.DataSet.Next;
Until   DBGrid1.DataSource.DataSet.Eof;
Quello che prelevi lo metti dove vuoi


 rappresentati sulla riga del dbgrid?
Quando navighi e selezioni un record da un controllo "data aware", sia 
questo una *TDBGrid* o un *TDBNavigator* e così via, non fai altro che 
spostare il "cursore" del record corrente all'interno del componente 
DataSet (*TQuery*, *TADOQuery*, *TIBQuery*, *TClientDataSet*, ...) 
associato al controllo tramite il componente *TDataSource*, che fa da 
intermediario.
Tutti i controlli legati al medesimo *TDataSource* e, di conseguenza, 
allo stesso DataSet che contiene i dati ne riflettono lo stato.
Questo significa che costruire un Form in grado di visualizzare i dati 
del record corrente è un'operazione semplicissima: ti basta creare un 
nuovo *TForm* ex novo nel progetto della tua applicazione, inserire i 
"Data Control" (*TDBEdit*, *TDBMemo*, *TDBLookupComboBox*, ...) 
all'interno della finestra e impostare la proprietà /DataSource/ al 
suddetto componente *TDataSource* collegato al DataSet che viene 
"esplorato" dalla griglia; infine, per i controlli devi assegnare 
inoltre il /DataField/, cioè il nome del campo da visualizzare.
Quando hai selezionato un record dalla griglia, aprendo il Form appena 
descritto vedrai tutti i valori dei singoli campi del record corrente.
Per completare l'opera, potresti avviare la modalità di "Edit" nel 
momento in cui apri il Form tramite un'azione o un pulsante, e procedere 
ad invocare il metodo /Post/ o /Cancel/ del DataSet collegato nel 
momento in cui, rispettivamente, premi il pulsante "Ok" e "Annulla" del 
tuo Form secondario (tanto per fare un esempio banale).
Fai qualche prova seguendo le istruzioni e poi sappimi dire. :-)
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 if DBGrid1.DataSource.DataSet.Eof = false then
Dovevi mettere anche :
And ' 1' = '1' And '2' = '2' ....
And 'CIAO' = uppercase('ciao')
A proposito.
Ciao
Mario
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ha, ha, ha... [...]
Lascia perdere il "troll"... ;-)


Grande questa :
Poveretto !! che figuraccia ci fai.. S T U D I A !
E' per un bug
Prova a togliere l'if e vedi il messaggio d'errore col ponte odbc:jar


Cioč, fai questa prova:
1) Metti un ODBC con TOMCAT che punta a ACCESS
2) Utilizza jdbc:odbc:....
Se riesci a fare a meno del controllo sull'avanzamento ti regalo 10 
licenze di Delphi2006.
PRIMA DI PARLARE ..... S T U D I A....



Ok funziona tutto grazie!!!
