| 

.NET C# Java Javascript Exception

2
Hallo an alle!

Ich habe hier ein Access 2003 Frontend welches per ODBC an einen SQL 2005 Server angebunden ist. In einem Formular habe ich drei Liestviews welche den Inhalt von drei Views des SQL Servers anzeigen sollen. Wenn ich die Views direkt im Access ansehe, sind die sofort da. Gehe ich in den Debug-Modus und laufe im Einzelschritt durch das Formular, sind die LVs sofort gefüllt. Lasse ich das Formular in Runtime-Modus anzeigen, so brauchen die LVs so zwischen 8 und 30 Sek. bis der Inhalt angezeigt wird.

Woran kann das liegen? Und vor allem wie kann ich das Laufzeitverhalten optimieren?

Hier eine Beispielview:

CREATE VIEW [dbo].[vw_Rueckmeldung_Grp_taet_offen]
AS
SELECT row_number() OVER (ORDER BY AAID, RM_Timestamp) AS ID, GrpID, GrpNr, Grp_Name, Barcode, Arbeitsauftrag, Artikelbezeichnung, Tätigkeit,
AnzahlSoll,
(SELECT ISNULL(SUM(gm.AnzahlRM), 0) AS expr1
FROM dbo.tab_Gruppe AS g INNER JOIN
dbo.tab_GruppeMerkmal AS gm ON g.ID = gm.GruppeID
WHERE (gm.Rueckmeldung = 1) AND (g.ID = vw.GrpID) AND (gm.MerkmalID = vw.MerkmalID)) AS AnzahlIst, (CASE WHEN AnzahlSoll <=
(SELECT isnull(SUM(gm.AnzahlRM), 0) AS expr1
FROM dbo.tab_Gruppe AS g INNER JOIN
dbo.tab_GruppeMerkmal AS gm ON g.ID = gm.GruppeID
WHERE (gm.Rueckmeldung = 1) AND (g.ID = vw.GrpID) AND (gm.MerkmalID = vw.MerkmalID)) THEN 'ja' ELSE 'nein' END) AS Fertig, AAID, PersNr,
Bearbeiter, MerkmalID, Bestätigt, RM_Timestamp, AnzahlMin
FROM dbo.vw_Rueckmeldung_Alle_Grp AS vw
WHERE (AnzahlSoll >
(SELECT ISNULL(SUM(gm.AnzahlRM), 0) AS expr1
FROM dbo.tab_Gruppe AS g INNER JOIN
dbo.tab_GruppeMerkmal AS gm ON g.ID = gm.GruppeID
WHERE (gm.Rueckmeldung = 1) AND (g.ID = vw.GrpID) AND (gm.MerkmalID = vw.MerkmalID)))


Und so rufe ich die View im VBA Code auf:

Dim strSQLGrpoffen As String
Dim strSQLGrpTartigkeit As String
Dim strSQLGrpoffenFilter As String
Dim strSQLGrpTartigkeitFilter As String
Dim strSQLGrp As String
Dim strFilterMerkmal As String
Dim intGruppe As Integer
Dim intMengeSoll As Integer

If cboGruppennr.ListIndex > 0 Then
intGruppe = cboGruppennr.Column(1)
intGruppenID = DLookup("ID", "tab_Gruppe", "(AAID = " & CStr(intAAID) & ") and (Nummer = " & CStr(intGruppe) & ")")
intMengeSoll = DLookup("Anzahl", "tab_Gruppe", "ID = " & CStr(intGruppenID))
txtMenge = CStr(intMengeSoll)
txtMenge.Enabled = True
cmdBestaetigen.Enabled = True
Else
txtMenge = ""
cmdConfirm.SetFocus
txtMenge.Enabled = False
cmdBestaetigen.Enabled = False
End If

If bolRMTatFilter Then
If cboTaetigkeit.ListIndex = 0 Then
strFilterMerkmal = "(vw.MerkmalID > 0)"
Else
strFilterMerkmal = "(vw.MerkmalID = " + CStr(cboTaetigkeit) + ")"
End If
Else
strFilterMerkmal = "(vw.MerkmalID > 0)"
End If

If Len(Nz(cboTaetigkeit, "")) > 0 Then
strSQLGrpoffen = "SELECT vw.Barcode, vw.Arbeitsauftrag, vw.Artikelbezeichnung, vw.Tätigkeit, vw.Bearbeiter, vw.AnzahlSoll, vw.AnzahlIst, vw.AnzahlMin " & _
"FROM vw_Rueckmeldung_taet_offen as vw " & _
"WHERE (vw.AAID = [Forms].[frmRueckmeldung_Gruppe_TS].[txtAAID]) " & _
"ORDER BY vw.Artikelbezeichnung, vw.Barcode, vw.Tätigkeit;"

strSQLGrpoffenFilter = "SELECT vw.GrpNr, vw.Grp_Name, vw.Barcode, vw.Arbeitsauftrag, vw.Artikelbezeichnung, vw.Tätigkeit, vw.Bearbeiter, vw.AnzahlSoll, vw.AnzahlIst, vw.AnzahlMin " & _
"FROM vw_Rueckmeldung_Grp_taet_offen as vw " & _
"WHERE (vw.GrpNr = " + CStr(cboGruppennr.Column(1)) + ") " + strFilterMerkmal + " and (vw.AAID = [Forms].[frmRueckmeldung_Gruppe_TS].[txtAAID]) " & _
"ORDER BY vw.Artikelbezeichnung, vw.Barcode, vw.Tätigkeit;"

strSQLGrpTartigkeit = "SELECT vw.GrpNr, vw.Grp_Name, vw.Barcode, vw.Arbeitsauftrag, vw.Artikelbezeichnung, vw.Tätigkeit,vw.Bearbeiter, vw.AnzahlSoll, vw.AnzahlIst, vw.AnzahlMin " & _
"FROM vw_Rueckmeldung_Grp_taet_fertig as vw " & _
"WHERE (vw.AAID = [Forms].[frmRueckmeldung_Gruppe_TS].[txtAAID]) " & _
"ORDER BY vw.RM_TimeStamp desc, vw.Artikelbezeichnung, vw.Barcode, vw.Tätigkeit;"

strSQLGrpTartigkeitFilter = "SELECT vw.GrpNr, vw.Grp_Name, vw.Barcode, vw.Arbeitsauftrag, vw.Artikelbezeichnung, vw.Tätigkeit,vw.Bearbeiter, vw.AnzahlSoll, vw.AnzahlIst, vw.AnzahlMin " & _
"FROM vw_Rueckmeldung_Grp_taet_fertig as vw " & _
"WHERE (vw.GrpNr = " + CStr(cboGruppennr.Column(1)) + ") " + strFilterMerkmal + " and (vw.AAID = [Forms].[frmRueckmeldung_Gruppe_TS].[txtAAID]) " & _
"ORDER BY vw.RM_TimeStamp desc, vw.Artikelbezeichnung, vw.Barcode, vw.Tätigkeit;"

strSQLGrp = "SELECT vw.GrpNr, vw.Grp_Name, vw.Barcode, vw.Arbeitsauftrag, vw.Artikelbezeichnung, vw.AnzahlSoll, vw.AnzahlIst " & _
"FROM vw_Rueckmeldung_Grp_fertig as vw " & _
"WHERE (vw.AAID = [Forms].[frmRueckmeldung_Gruppe_TS].[txtAAID]) " & _
"ORDER BY vw.Artikelbezeichnung, vw.Barcode;"

Me.lstRueckmeldungArtikel.RowSource = strSQLGrp
If cboGruppennr.ListIndex > 0 Then
Me.lstRueckmeldungOffen.RowSource = strSQLGrpoffenFilter
Me.lstRueckmeldungTaetigkeiten.RowSource = strSQLGrpTartigkeitFilter
Else
Me.lstRueckmeldungOffen.RowSource = strSQLGrpoffen
Me.lstRueckmeldungTaetigkeiten.RowSource = strSQLGrpTartigkeit
End If
ShowCounts
End If
News:
17.02.2015
tschroeer 35 1 4
1 Antwort
0
Problem gelöst.

Es lag ein einem nicht optimalen Algorythmus in meiner "ShowCounts" Prozedur.
18.02.2015
tschroeer 35 1 4

Stelle deine View-Frage jetzt!