/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Underligt problem med DBGrid og DataSet
Fra : // Overby


Dato : 11-10-02 14:17

Hejsa...

Jeg er ved at udvikle en applikation og bruger InterBase som DBMS. Jeg har
nogle data som jeg via SQL henter ind i et Delphi program og skriver ud i et
memo sådan her.

IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select * from elev where cpr = :p0')
IBQuery1.Params[0].AsString:=Edit1.Text;
IBQuery1.Open;

DataSource1.DataSet.First;
for i:= 0 to DataSource1.DataSet.RecordCount do
begin
Memo1.Lines.Add('DataSource1.DataSet.Fields[0].AsString');
DataSource1.DataSet.Next;
end;

Problemet er bare, at jeg ikke får skrevet alle tuplerne ud i tabellen. Kun
2 el. 3! Hvis jeg derimod Smider et DBGrid på formen og sætter dens
DataSource til DataSource1, så får jeg alle tupler med, hvis DBGrid'en er
stor nok. Forstået på den måde, at hvis der er plads til alle tupler i
DBGrid uden brug af scrollbar, så bliver alle tupler også skrevet ud i
Memo'et, men hvis jeg laver DBGrid'en mindre, så er det ikke alle der kommer
ud!

Hvis jeg så sætter DBGrid.Visible:=FALSE så fungerer det heller ikke!?!?!

Hvorfor afhænger mit DataSet af, om der er tilknyttet et DBGRid? Griber jeg
det forkert an?

Håber der er en, der kan hjælpe en desperat sjæl.

- @ -
Daniel Overby Hansen aka mrDO
Find me on MSN Messenger: daniel@FJERNESoverbyhansen.dk
www.overbyhansen.dk
www.vis-logen.dk - ren morskab



 
 
Lars Bargmann (13-10-2002)
Kommentar
Fra : Lars Bargmann


Dato : 13-10-02 19:25

Brug en while-løkke istedet for en for-løkke....
Problemet er at RecordCount ikke virker, fordi den underliggende teknik gør
at dit dataset i virkeligheden ikke henter flere rækker end der er brug for,
i dit eksempel, så mange rækker som der er synligt i grid'et....

Gør således i stedet :
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select * from elev where cpr = :p0')
IBQuery1.Params[0].AsString:=Edit1.Text;
IBQuery1.Open;

while not IBQuery1.EOF do
begin
Memo1.Lines.Add(IBQuery1.Fields[0].AsString);
IBQuery1.Next;
end;

Burde virke fremragende...

Bargmann


"// Overby" <danielFJERN@FJERNoverbyhansen.dk> wrote in message
news:ao6ivk$249p$1@news.cybercity.dk...
> Hejsa...
>
> Jeg er ved at udvikle en applikation og bruger InterBase som DBMS. Jeg har
> nogle data som jeg via SQL henter ind i et Delphi program og skriver ud i
et
> memo sådan her.
>
> IBQuery1.SQL.Clear;
> IBQuery1.SQL.Add('select * from elev where cpr = :p0')
> IBQuery1.Params[0].AsString:=Edit1.Text;
> IBQuery1.Open;
>
> DataSource1.DataSet.First;
> for i:= 0 to DataSource1.DataSet.RecordCount do
> begin
> Memo1.Lines.Add('DataSource1.DataSet.Fields[0].AsString');
> DataSource1.DataSet.Next;
> end;
>
> Problemet er bare, at jeg ikke får skrevet alle tuplerne ud i tabellen.
Kun
> 2 el. 3! Hvis jeg derimod Smider et DBGrid på formen og sætter dens
> DataSource til DataSource1, så får jeg alle tupler med, hvis DBGrid'en er
> stor nok. Forstået på den måde, at hvis der er plads til alle tupler i
> DBGrid uden brug af scrollbar, så bliver alle tupler også skrevet ud i
> Memo'et, men hvis jeg laver DBGrid'en mindre, så er det ikke alle der
kommer
> ud!
>
> Hvis jeg så sætter DBGrid.Visible:=FALSE så fungerer det heller ikke!?!?!
>
> Hvorfor afhænger mit DataSet af, om der er tilknyttet et DBGRid? Griber
jeg
> det forkert an?
>
> Håber der er en, der kan hjælpe en desperat sjæl.
>
> - @ -
> Daniel Overby Hansen aka mrDO
> Find me on MSN Messenger: daniel@FJERNESoverbyhansen.dk
> www.overbyhansen.dk
> www.vis-logen.dk - ren morskab
>
>



// Overby (14-10-2002)
Kommentar
Fra : // Overby


Dato : 14-10-02 07:30

> Burde virke fremragende...

Hvilket det også gør! Jeg takker mange gange for hjælpen....

Daniel



Søg
Reklame
Statistik
Spørgsmål : 177495
Tips : 31968
Nyheder : 719565
Indlæg : 6408489
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste