I en tråd skapad av Jörgen Fransson framförde Andreas Hillqvist metoden att fylla en Flexgrid med användande av TextMatrix och stegning genom hela griden. Data hämtas från en Accessdatabas med hjälp av en SQL-sats. När jag fyller min Flexgrid använder jag en Adodc som laddas med en SQL-sats från en Accessdatabas. Det handlar alltså om att använda antingen TextMatrix eller en Adodc för att fylla Flexgriden. Koderna för båda varianterna framgår av tråden som Jörgen F startade. Kan du inte göra ett test genom att klocka det hela? Jag använder mig av MSHFlexGrid. Skulle vara mycket intressant att höra vad du får för tid om du gör så här Jag återkommer i sinom tid med en rapport, men dröjer kanske några dagar... Jag har nu fter vissa bekymmer lyckats använda den av Andreas H föreslagna metoden att fylla en MSHFlexgrid med hjälp av TextMatrix-metoden. i korthet blev resultatet på min dator följande tider: Tänkte bara säga att det är bättre att mäta i programmet istället. Handlar det bara om att faktiskt mäta något vid ett tillfälle så är timer helt ok, det behövs inget API. Niklas! Vad menar Du med Att det är dumt att det tar ett antal sekunder innan själva programmet öppnas. Visa en Splashscreen där du visasr vad som händer under uppladdningen, eller öppna själva formen. Man kan missuppfatta det som att programmet har låst sig. OKdå förstår jag vad Du menar. Jag håller helt med Dig. Därför öppnas en splashscreen omedelbart som anger viss info för användaren. Den tid jag avsåg var tiden från klick tills dess huvudformen öppnas. testat detta... ?Effektiv inläsning av data till Flexgrid, vilket är bäst?
Vilken metod är snabbast?
Kan jag vänta mig en stor prestanda förbättring om jag skiver om mitt program till TextMatrixmetoden?
Tacksam för synpöunkter och erfarenheter...Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Getrows är ju i många fall snabbt.Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Databasen innehåller ca 40000 poster.
Tar ca 3-5 sekunder att fylla en MSHFlexGrid
MSHFlexGrid egenskaper
FixedRows = 1
FixedCols = 0
Rows = 2
Columns = Så många kolumner du behöver ' I det här fallet 3
Kod för att fylla MSHFlexGrid
MSHFlexGrid1.Recordset = det öppnade recordsetet
MSHFlexGrid1.FormatString = "<Artikelnummer |<Benämning1 |<Benämning2 " ' Skriver rubriker
MSHFlexGrid1.ColWidth(1) = 1000
MSHFlexGrid1.ColWidth(2) = 2000
MSHFlexGrid1.ColWidth(3) = 2000Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
<code>
MSHFlexGrid1.Visible = False
MSHFlexGrid1.Recordset = det öppnade recordsetet
MSHFlexGrid1.FormatString = "<Artikelnummer |<Benämning1 |<Benämning2 " ' Skriver rubriker
MSHFlexGrid1.ColWidth(1) = 1000
MSHFlexGrid1.ColWidth(2) = 2000
MSHFlexGrid1.ColWidth(3) = 2000
MSHFlexGrid1.Visible = True
</code>Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Hämtning av data från Access. I steg 1 fylls en Adodc och i steg 2 fylls HSHFlexgriden
Starttid från klick på programikon till dess första formen öppnar: medianvärde 15 sek (max 22, min 14)
Hämtning av data från Access. Med hjälp av TextMatrix stegas igenom ett recordset och griden fylls
Starttid från klick på programikon till dess första formen öppnar: medianvärde 10 sek (max 11, min 9)
TextMatrix-metoden var alltså signifikant bättre. Det är den metod jag fortsättningsvis kommer att använda.
SvenPon ville att jag skulle prova med att göra fyllningen av grid med property Visible = False och jämföra med att ha gridproperty Visible = True.
Resultatet visade ingen signifikant skillnad på min dator, i varje fall ingen mätbar skillnad!
Tiden tagen med armbandsklocka och är natruligtvis inte exaktSv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Gör en loop där du kör din grej ett antal gånger, och sen dividerar du tiden det gick emellan med antalet gånger.
<code="vb">
StartTid = Timer
For i=1 to 10
'Gör din grej
Next
TidFörEn =( Timer-StartTid)/10
</code>
(Kan naturligtvis göras adaptivt och som en separat funktion som tar hänsyn till funktionsanrop också, men då kan man lika gärna köra API-funktionerna. Intressant idé för övrigt...)
En annan grej också: Försök undvika väntetider under programmets öppning.Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
<b>
En annan grej också: Försök undvika väntetider under programmets öppning.
</b>Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Försök få programmet att reagera så fort som möjligt, och gör sen tidskrävande processer.Sv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
Från början hade jag 15 sekunder starttid, med TextMatrix kom jag ner till ca 10 sek och idag har jag trimmat Accesddatabasen på olika sätt. Dessutom fyller jag bara med 1000 poster direkt (av sammanlagt drygt 90000). Tiden är nu nere i ca 7 sek, vilket jag tycker kan vara acceptabelt. I varje fall vet jag inget sätt att ytterligare korta ner tiden.
15 sek på min dator motsvaras av en starttid på 5 min 30 sek på en Win98 med P3-proc och 128 MB. Många av mina användare kan tänkas ha äldre datorer och då är starttiden viktigSv: Effektiv inläsning av data till Flexgrid, vilket är bäst?
FlexGrid1.Clip = rs.GetString(adClipString, -1, Chr(9), Chr(13), vbNullString)
Ola