Nach einer Suchabfrage in Access friert die Form genau 15 Sekunden ein

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Nach einer Suchabfrage in Access friert die Form genau 15 Sekunden ein

    Ich habe eine Suchfunktion mit Suchkriterien in VB.Net programmiert. Nach der Eingabe eines Suchkriteriums wird das Ergebnis in DataGridView angezeigt. Die Anzeige funktioniert sehr schnell. Nur nach der Anzeige der Daten im DataGridView bleibt das Programm kurz hängen (Keine Rückmeldung, genau immer 15 Sekunden). Suche ich danach nochmal mit dem gleichen Suchkriterium funktioniert alles einwandfrei.
    Habe ich das Programm längere Zeit nicht benutzt, passiert wieder das gleiche. Dieses Auftreten ist immer unregelmäßig.

    Ich arbeite mit keinem typisierten Dataset
    Es ist eine lokale Datenbank
    Datenbank ist Access 2016
    Programmiert mit Visual Studio 2019
    Der Code ist in einer Form geschrieben. Habe es auch in ein Modul ausgelagert, gleiches Ergebnis.
    Während die Form Keine Rückmeldung anzeigt habe ich Str + Pause gedrückt um den Punkt zu sehen wo er hängt.
    Ich habe folgende Meldung erhalten:


    VB.NET-Quellcode

    1. Private Function FncSuchen_IV() As Object 'frmVPInventur
    2. Dim parm1 As String = ("%") : Dim parm2 As String = ("%") : Dim parm3 As String = ("%")
    3. Dim parm4 As String = ("%") : Dim parm5 As String = ("%") : Dim parm6 As String = ("%")
    4. Dim parm7 As String = ("%") : Dim parm8 As String = ("%") : Dim parm9 As String = ("%Z1%")
    5. Dim DatenM As New DataSet
    6. Dim Debitor_ZDIS As String : Dim Name1 As String : Dim Ort As String : Dim PLZ As String : Dim Strasse As String 'Dim Telefon1 As String
    7. parm1 = parm1 + txtVPNrSuchen_IV.Text + parm1
    8. parm2 = parm2 + txtFirmaSuchen_IV.Text + parm2
    9. parm3 = parm3 + txtOrtSuchen_IV.Text + parm3
    10. parm4 = parm4 + txtPLZSuchen_IV.Text + parm4
    11. parm5 = parm5 + txtStrasseSuchen_IV.Text + parm5
    12. Dim Zaehler As String = "0"
    13. DGVSuchen1_IV.Visible = True
    14. DGVSuchen1_IV.Size = New Size(792, 316)
    15. DGVSuchen1_IV.Location = New Point(9, 56)
    16. DBopenLocal()
    17. conLocal.Open()
    18. cmdLocal.CommandText = "SELECT DISTINCT [tblKNA1_ZDIS.Debitor], [tblKNA1_ZDIS.Name1], [tblKNA1_ZDIS.Ort], [tblKNA1_ZDIS.PLZ], [tblKNA1_ZDIS.Strasse]
    19. FROM tblKNA1_ZDIS
    20. WHERE tblKNA1_ZDIS.Debitor LIKE '" & parm1 & "' And tblKNA1_ZDIS.Name1 LIKE '" & parm2 & "' And tblKNA1_ZDIS.Ort LIKE '" & parm3 & "'
    21. And tblKNA1_ZDIS.PLZ LIKE '" & parm4 & "' And tblKNA1_ZDIS.Strasse LIKE '" & parm5 & "'
    22. ORDER BY tblKNA1_ZDIS.Debitor"
    23. DGVSuchen1_IV.Rows.Clear()
    24. readerLocal = cmdLocal.ExecuteReader
    25. Dim LaufendeNr As String = Nothing
    26. Do While readerLocal.Read
    27. Zaehler = CStr(CInt(Zaehler) + 1)
    28. Debitor_ZDIS = CStr(readerLocal("tblKNA1_ZDIS.Debitor"))
    29. Debitor_ZDIS = Debitor_ZDIS.Substring(4)
    30. Name1 = CStr(readerLocal("tblKNA1_ZDIS.Name1"))
    31. Ort = CStr(readerLocal("tblKNA1_ZDIS.Ort"))
    32. Strasse = CStr(readerLocal("tblKNA1_ZDIS.Strasse"))
    33. PLZ = CStr(readerLocal("tblKNA1_ZDIS.PLZ"))
    34. DGVSuchen1_IV.Rows.Add(Zaehler, Debitor_ZDIS, Name1, PLZ, Ort, Strasse)
    35. btnSuchenVP_IV.Text = Zaehler + " VP's gefunden"
    36. btnSuchenVP_IV.Refresh()
    37. Loop
    38. If Debitor_ZDIS = "" Then
    39. DGVSuchen1_IV.Visible = False
    40. End If
    41. DGVSuchen1_IV.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    42. DGVSuchen1_IV.Refresh()
    43. cmdLocal.Cancel()
    44. readerLocal.Close()
    45. conLocal.Close()
    46. End Function

    Danke in Voraus
    LEOGOLD
    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden.
    Was passiert performancemäßig, wenn Du Zeile#49 auskommentierst?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ein anderer Punkt ist, dass jedes Script-Kiddie dir deine Datenbank in 10min komplett ruinieren kann.
    Must-Know: Sql-Injection

    Zur Frage: Sorry - weiss ich nicht. Wenn ich recht verstehe, ist die Abfrage komplett fertig, man sieht schon die neuen Daten, und danach entscheidet sich das Proggi, nochmal 15s zu warten?
    Ja, vlt. kommt man mit dem Pdb-Problem weiter. Vielleicht startest du dein Proggi ja im Release-Modus, oder google mal, wie es kommt, dass die pdbs nicht ordnungsgemäss da sind wo sie hingehören.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo VaporiZed,
    was meinst Du mit "empfohlenen VS-Einstellungen verwenden"?
    Zeile#49 aus kommentiert leider ohne Erfolg

    Hallo ErfinderDesRades,
    SQL-Injection?????
    Ja, die Daten werden im DGV vollständig angezeigt und danach hängt das Programm immer genau 15 sec.
    Dies ist aber nicht immer. Wenn ich nach dem einfrieren das gleiche Suchkriterium eingebe funktioniert es einwandfrei.
    Ich bin am verzweifeln. Habe schon mit Haltepunkten in verschiedenen Zeilen gearbeitet.
    Friert immer unterschiedlich ein.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LEOGOLD“ ()

    Kommentiere das mal aus und teste dann wie lange das Programm nicht reagiert.
    DGVSuchen1_IV.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo: Öhm … siehe Post#2? Und die Antwort gleich darauf.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed ah ok. Ich seh auf dem Handy keine Zeilennummern...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen