Hvordan kopier man en søjle fra dbgrid til en Tstringlist.
Jeg skal gennemløbe et stort data sæt og jeg kan ikke finde en beginupdate på dbgriden hvilket gør at det tager en krig at gennemløbe en søjle i dbgrid.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
... opret en query, lav operationen der og, når du er færdig, genåbn' det datasæt der er koblet til din grid (i øvrigt er søjle et lidt forvirrende udtryk. Kan bedre lide kolonne).
- eller burde kronings eksempel nok virke, men jeg synes det er en forkert vej at gå.
kun de varer som alle forhandler har skal med i tablen. Jeg ønsker naturligvis at metoden skal værre så hurtig som mulig.
Jeg har brugt join med mysql for nogle eksempler hvor jeg har to forhandler og allerede her syntes jeg mysql er lidt sløv med at svare. Jeg tror derfor at jeg kan lave tabellen hurtigere ved at hente alt data også lave tabellen vhj delphi. Det er muligt at dette skyldes min manglende kendskab til mysql.
Der er så også lige den krølle at nogle varenavne forekommer to gange med to forskellig priser. I de tilfælde skal gennemsnits bruges i tabellen. Dette gør at mySQL join metoden ikke er en god løsning i mit tilfælde.
Jeg forsøgt i ren panik at bruge kroning's metode men det går ikke hurtigtere. Godt nok ser jeg ikke opdateringerne på skærmen men af en eller anden grund er det bare super langsomt at gennemløbe en dbgrid.
Vi taler om et par minuter hvorimod en stringlist af samme størrelse ville tage under et 1 sekund.
Det tager også kun 1 sekund at hente data fra mySQL. Så jeg forstår ikke hvorfor det tager så lang tid.
Jeg har lige forsøgt med en SELECT + JOIN (2 tabeller), i alt 14 felter i hver record. Resultatet var lidt over 61000 poster med som nævnt hver 14 felter. Derefter gennemløber jeg alle poster og ligger tal fra flere felter sammen. Det tager ca. 10 sekunder med det hele på en AMD 64 4000+
Forskellen er at jeg gennemløber 40000*30=1200000 poster i dbgriden eller i data sættet. Jeg har 20 gang flere felter dvs at det burde tager 200 sekunder for mig. Hvilket det desværre ikke gør :-(
Min sql query tager 1 sek. ingen ko på isen der. Det er når jeg gennemløber mit dbgrid at det tager en krig.
Jeg gennemløber med:
DataSource4.DataSet.First; richedit1.Lines.BeginUpdate; while not DataSource4.DataSet.Eof do begin line:=DataSource4.DataSet.FieldByName('ID').AsString; line:=line+#9+DataSource4.DataSet.FieldByName('Symbol').AsString; line:=line+#9+DataSource4.DataSet.FieldByName('M').AsString; line:=line+#9+DataSource4.DataSet.FieldByName('P_value').AsString; line:=line+#9+DataSource4.DataSet.FieldByName('A').AsString; richedit1.Lines.Add(line); DataSource4.DataSet.Next; end; richedit1.Lines.EndUpdate;
her er koden simpler da jeg i i virkeligheden bør tage gennemsnittet når ID og Symbol er ens.
Du burde lave en selvstændig query; en der ikke hænger på noget som helst andet end databasen. Den vil nok også tage tid at køre, men når griddet er koblet fra vil det afgjort hjælpe.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.