[Delphi] DBGrid - 2 pytania

0

Witam , mam w dbgridzie wyswietlone rekordy, teraz chcialbym przejechac po nich petlą i zliczyc ile ich tam jest , robie cos takiego:

DBGrid1.Fields[i].Value - to oczywscie w petli po 'i' ale gdy i>0 to access violation
Pewnie to nie tak sie robi :)

Aha i jak zliczyc ile jest wyswietlonych rekordow w DBGridzie ?

0

Nie zliczaj rekordów w DBGridzie tylko w DataSet. Przykładowo jeśli korzystasz z komponentu Table lub Query to wystarczy napisać:

  Table.Last;
  Liczba_Rekordow:=Table.RecNo;
0

A dlaczego nie użyjesz RecordCount?

Jacek

0

Właściwie to zależy od rodzaju bazy danych. Powyższa metoda zawsze zwróci liczbę wszystkich rekordów. Liczbę rekordów odczytanych można uzystać w następujący sposób:

liczba_rekordow:=IntToStr(Table.RecordCount)

Przykładowo dla bazy MSSQL obia sposoby zwrócą tę samą wartość natomiast w przypadku bazy Oracle, kolejne rekordy odczytywane są podczas przeciągania ScrollBara w DBGridzie i wartość zwrócona przez RecordCount będzie się zwiększała.

0
hes napisał(a)

w przypadku bazy Oracle, kolejne rekordy odczytywane są podczas przeciągania ScrollBara w DBGridzie i wartość zwrócona przez RecordCount będzie się zwiększała.

Nie znam Oracle'a... A FetchAll nie pomaga?

Jacek

0

Uzywam komponentow DbExpress do laczenia z baza Mysql. Mam takie komponnety jak:
SQLConnection, SQLDataSET, DataSetProvider, ClientDataSet1, i Data Source1
SQLDataSEt.RecordCount nie daje efektu, w ktorym komponencie mam to zastosowac?

0

Nie wiem dokładnie, jak to jest w MySQL'u.
Co to znaczy, że SQLDataSEt.RecordCount nie daje efektu?
Jeśli zwraca za małą wartość to zastosuj:

SQLDataSet.Last;
ilosc:=SQLDataSet.RecNo;
JacekH napisał(a)

<Nie znam Oracle'a... A FetchAll nie pomaga?

Pomaga :)

0
hes napisał(a)

Nie wiem dokładnie, jak to jest w MySQL'u.
Co to znaczy, że SQLDataSEt.RecordCount nie daje efektu?

Hmm jak dam takowa linie to pisze ze zle haslo lub username, a bez tej linii laczy sie z baza :(

0

Musiałeś coś chyba namieszać z powiązaniem komponentów. Sprawdziłem doświadczalnie. U mnie działa na Krasnalu 2.7-5 taka konstrukcja:

 Caption:=IntToStr(SQLDataSet1.RecordCount);
0
hes napisał(a)

Musiałeś coś chyba namieszać z powiązaniem komponentów. Sprawdziłem doświadczalnie. U mnie działa na Krasnalu 2.7-5 taka konstrukcja:

 Caption:=IntToStr(SQLDataSet1.RecordCount);

Hmm sprawdze, a powiedz mi bo ja mam takie komponety:

SQLConnection, SQLDataSet, DataSetProvider, ClientDataSet, DataSource

Czy wszystkie one sa potrzbne ?
Przyznam ze laczylem to z gotowca jakiegos z netka.1

0

To zależy, co chcesz osiągnąć. Do realizacji problemu, który przedstawiłeś wystarczą SQLConnection, SQLDataSet. Ja zwykle zamiast komponentów typu DataSet używam Query albo Table.

0
hes napisał(a)

To zależy, co chcesz osiągnąć. Do realizacji problemu, który przedstawiłeś wystarczą SQLConnection, SQLDataSet. Ja zwykle zamiast komponentów typu DataSet używam Query albo Table.

Chce sie polaczyc z baza mysql-owa i wyswietlic zawartosc zapytania na dbgridzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1