Veröffentlicht 13. Februar 200718 j ich nutze ein dgrid mit einem recorset recordset ist veraltet, ich weis; die frage ist nun: liegt es am recordset oder am dgrid, dass alles so langsam ist; der select selbst benötigt keine 2 sekunden; welche alternativen gibt es zum recordset?
13. Februar 200718 j .NEt 1 oder 2? Wenn >= 2 dann versuch's mal mit einem DataTable und dann DataGridView zur Visualisierung.
13. Februar 200718 j 1, aber das dgrid werd ich so oder so verwenden,w eil ich schon immense zeit da rein gesteckt habe gibts für 1 was?
14. Februar 200718 j ich nutze ein dgrid mit einem recorset recordset ist veraltet, ich weis; die frage ist nun: liegt es am recordset oder am dgrid, dass alles so langsam ist; der select selbst benötigt keine 2 sekunden; welche alternativen gibt es zum recordset? Hi, wieviele Datensätze zeigst du denn an? Wäre für den Kunden ein datagrid mit Paging eine Option? Im Datagrid wird SEHR viel Müll in den Viewstate geschrieben, da kann man händisch noch recht viel optimieren. Der HTML-code für eine Spalte könnte auch helfen, um Performanceprobleme aufzudecken. Hast du noch zusätzliche SQL Abfragen oder viel code im DataItemBound? s.
15. Februar 200718 j so sieht mein datenladen aus; im beispiel benötigt ein select für ca. 400 datensätze in der db ~ 400 ms, in vb ~ 13 sekunden Private dt As DataTable = New DataTable("Kriterien") Friend WithEvents mDataSet As DataSet Private dgTS As DataGridTableStyle = New DataGridTableStyle Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim dcFallID As DataColumn = New DataColumn("FallID") Dim dcBezeichnung As DataColumn = New DataColumn("Bezeichnung") Dim dcFallArt As DataColumn = New DataColumn("Art") Dim dcFallKategorie As DataColumn = New DataColumn("Kategorie") Dim dcProjekt As DataColumn = New DataColumn("Projekt") Dim dcStatus As DataColumn = New DataColumn("Status") Dim dcPrio As DataColumn = New DataColumn("Prio") Dim dcAnlagedatum As DataColumn = New DataColumn("Anlagedatum") Dim dcWunschtermin As DataColumn = New DataColumn("Wunschtermin") Dim dcIstStart As DataColumn = New DataColumn("IstStart") Dim dcIstEnde As DataColumn = New DataColumn("IstEnde") Dim dcAnleger As DataColumn = New DataColumn("Anleger") Dim dcDelegiertAn As DataColumn = New DataColumn("Delegiert An") dcAnlagedatum.DataType = System.Type.GetType("System.DateTime") dcWunschtermin.DataType = System.Type.GetType("System.DateTime") dcIstStart.DataType = System.Type.GetType("System.DateTime") dcIstEnde.DataType = System.Type.GetType("System.DateTime") mDataSet = New DataSet("newDataSet") dt.Columns.AddRange(New DataColumn() {dcFallID, _ dcBezeichnung, _ dcFallArt, _ dcFallKategorie, _ dcProjekt, _ dcStatus, _ dcPrio, _ dcAnlagedatum, _ dcWunschtermin, _ dcIstStart, _ dcIstEnde, _ dcAnleger, _ dcDelegiertAn}) mDataSet.Tables.Add(dt) Dim sSql As String Dim oRs As New ADODB.Recordset Dim newRow As DataRow Dim iZeile As Integer sSql = " select * from vloadadmin " oRs.Open(sSql, oConn) If Not oRs.EOF Then dgTS.MappingName = "Kriterien" DataGrid1.TableStyles.Add(dgTS) DataGrid1.TableStyles("Kriterien").AlternatingBackColor = Color.LightGoldenrodYellow While Not oRs.EOF newRow = dt.NewRow dt.Rows.Add(newRow) dt.Rows(iZeile)("FallID") = oStdFct.vCheckNull(oRs(0).Value) dt.Rows(iZeile)("Bezeichnung") = oStdFct.vCheckNull(oRs(1).Value) dt.Rows(iZeile)("Art") = oStdFct.vTranslateFallArt(oRs(2).Value) dt.Rows(iZeile)("Kategorie") = oStdFct.vTranslateFallKategorie(oRs(3).Value) dt.Rows(iZeile)("Projekt") = oStdFct.vTranslateProjekt(oRs(4).Value) dt.Rows(iZeile)("Status") = oStdFct.vTranslateStatus(oRs(5).Value) dt.Rows(iZeile)("Prio") = oRs(13).Value & " - " & oStdFct.vTranslatePrio(oRs(13).Value) dt.Rows(iZeile)("IstStart") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(6).Value)) dt.Rows(iZeile)("IstEnde") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(7).Value)) dt.Rows(iZeile)("Anlagedatum") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(14).Value)) dt.Rows(iZeile)("Wunschtermin") = oStdFct.vCheckDate(oStdFct.vCheckNull(oRs(11).Value)) dt.Rows(iZeile)("Anleger") = oStdFct.vTranslateUser(oStdFct.vCheckNullUser(oRs(15).Value)) dt.Rows(iZeile)("Delegiert An") = oStdFct.vTranslateUser(oStdFct.vCheckNullUser(oRs(16).Value)) oRs.MoveNext() iZeile = iZeile + 1 End While End If oRs.Close() DataGrid1.DataSource = dt Exit Sub End Sub
15. Februar 200718 j folgendes noch: oRs.Open(sSql, oConn) benötigt ca. 7 sekunden If Not oRs.EOF Then While Not oRs.EOF End While End If benötigt ca. 6 sekunden
15. Februar 200718 j Was für eine DB benutzt Du? Sind die aktuellesten Versionen der DB und des DB-Treibers installiert? Verwendest Du OleDb oder ODBC?
15. Februar 200718 j Hast Du Bei Dir Access auf dem Rechner? Wenn ja, leg mal eine neue Access Datenbank mit einer einzigen, leeren Tabelle an und versuch Dich mal mit dieser zu verbinden um raus zu bekommen obs an der DB liegt. Im Normalfall ist OleDB zwar langsamer als ODBC, aber verushc trotzdem mal ob Du mit OleDb schneller auf die posgre DB kommst.
15. Februar 200718 j ne, an der db liegts sicher nicht und an der version auch nicht! wie gesagt, habe ich einen 7 sekunden delay, wenn ich das rs öffne, und weitere 6 sekunden, wenn ich das dt fülle; warum sollte es also an der db liegen, wenn ich z.b. die daten beim befüllen ja schon habe (aber es 6 sekunden dauert) muss wohl wo anders weitersuchen
15. Februar 200718 j Ganz einfach, weil Du ein Recordset benutzt und die Daten eben nicht beim Befüllen schon hast Das RS lässt meines wissens nach solange die Verbindung offen, bis Du es schließt. Und Da es veraltet ist würd ich es an Deiner stelle eh durhc einen DataReader ersetzebn, den steuerst Du genauso.
21. Februar 200718 j ne; es lag am odbc treiber; es gab noch einen, der 2 monate danach rausgekommen ist, mit dem öffnet sich das rs sofort; da ich das datenladen etwas anders gemacht habe, dauert das halt noch ein wenig, dass alles aber auf odbcdataadapter umzustellen wär zu aufwendig;
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.