xk4fu Geschrieben 13. Februar 2007 Teilen Geschrieben 13. Februar 2007 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
marcom Geschrieben 13. Februar 2007 Teilen Geschrieben 13. Februar 2007 .NEt 1 oder 2? Wenn >= 2 dann versuch's mal mit einem DataTable und dann DataGridView zur Visualisierung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xk4fu Geschrieben 13. Februar 2007 Autor Teilen Geschrieben 13. Februar 2007 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 14. Februar 2007 Teilen Geschrieben 14. Februar 2007 Ja, das DataGrid in Verbindung mit einer DataTable Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 14. Februar 2007 Teilen Geschrieben 14. Februar 2007 ich benutze bereits ein datatable... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LittleS Geschrieben 14. Februar 2007 Teilen Geschrieben 14. Februar 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xk4fu Geschrieben 15. Februar 2007 Autor Teilen Geschrieben 15. Februar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xk4fu Geschrieben 15. Februar 2007 Autor Teilen Geschrieben 15. Februar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 15. Februar 2007 Teilen Geschrieben 15. Februar 2007 Was für eine DB benutzt Du? Sind die aktuellesten Versionen der DB und des DB-Treibers installiert? Verwendest Du OleDb oder ODBC? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xk4fu Geschrieben 15. Februar 2007 Autor Teilen Geschrieben 15. Februar 2007 postgres 8 odbc Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 15. Februar 2007 Teilen Geschrieben 15. Februar 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xk4fu Geschrieben 15. Februar 2007 Autor Teilen Geschrieben 15. Februar 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 15. Februar 2007 Teilen Geschrieben 15. Februar 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xk4fu Geschrieben 21. Februar 2007 Autor Teilen Geschrieben 21. Februar 2007 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; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.