Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access 2000 VB Code bleibt plötzlich hängen

Frage Entwicklung VB for Applications

Mitglied: lendrod

lendrod (Level 1) - Jetzt verbinden

15.02.2010 um 17:17 Uhr, 6124 Aufrufe, 13 Kommentare

Hallo,

ich habe hier eine schwierige Access Anwendung die von meiner Vorhängering programmiert wurde.
Seit Freitag funktioniert es plötzlich nicht mehr.

Wenn ich den VBA Code step by step durch gehe bleibt er immer an Stellen mit "Wend" hängen.
Wenn ich die manuell übergehe ist der Code irgendwann durch und alles hat geklappt wie früher.

Mal einen Ausschnitt aus dem Code sieht man hier:

With CurrentDb.OpenRecordset("Reservierungen")
While Not .EOF
.MoveFirst
.Delete
.MoveNext
Wend
.Close
End With

Was macht dieses "Wend" ?
jemand eine Idee wie es passieren kann das Freitag morgen alles geht und Nachmittags nicht mehr oder wo ich so was nach schauen kann ?
Mitglied: Biber
15.02.2010 um 18:24 Uhr
Moin lendrod,

Zitat von lendrod:
Hallo,

ich habe hier eine schwierige Access Anwendung die von meiner Vorhängering programmiert wurde.
WTF ist eine Vorhängering?? Bzw. mag sie es wirklich, wenn du sie so bezeichnest, wenn sie grade den Raum verlassen hat?


Seit Freitag funktioniert es plötzlich nicht mehr.
Jepp, genau diese Fehlerbeschreibung bekommt wohl jeder von uns am Montag um die Ohren gehauen.

Wenn ich den VBA Code step by step durch gehe bleibt er immer an Stellen mit "Wend" hängen.
Wenn ich die manuell übergehe ist der Code irgendwann durch und alles hat geklappt wie früher.
Okay - jetzt weiß ich, was passiert beim "manuellen Durchsteppen".
Und ich weiß, dass es ordnungsgemäß läuft, wenn du die Zeile "Wend" übergehst.

Der Vollständigkeit halber
  • Springt denn in der Applikation selbst auch plötzlich der VBA-Editor auf oder läuft es da auch "alles wie früher"?
  • Du bist sicher, dass nicht nur im Debugger Haltepunkte auf der "Wend"-Zeile gesetzt sind?
  • Wenn du schreibst, du "übergehst" die Zeile "Wend", dann heißt das.... F7? F8? F9? oder mit welcher Taste genau?

Das "Wend" gehört zum "While".... ist also eine Art flapsiges "End While" ("wend" hört sich cooler an und es lässt sich einfacher beim Frühstücken aussprechen als "End While".

Grüße
Biber
Bitte warten ..
Mitglied: schregi82
15.02.2010 um 18:27 Uhr
While-Wend-Schleife

Eine Schleifenart, die nur noch aus Gründen der Kompatibilität in VBA enthalten ist, ist die While-Wend-Schleife:

While (Bedingung)
'Anweisungen
Wend

Wenn du vielleicht mehr aus der Quellcode reinkopieren könntest, wärs möglich das wir dir helfen können.
Ansonsten gerne auch per PN

lg,
Bitte warten ..
Mitglied: lendrod
15.02.2010 um 18:57 Uhr
Sorry, ich glaube die Grippe raft mich hin das ich so ein quatsch schreibe

Also der gepostete Code läuft die Ganze Zeit im Debugmodus durch.
Er läuft bis zu dem wend und fängt in der schleife wieder oben an.

In der Debug Funjtion ist so ein kleiner gelber Pfeil links, wenn ich den einen weiter schiebe auf close rennt die anwendung weiter step by step durch bis sie wieder auf eine schleife mit wend trifft und läuft da wieder im kreis.

Normal wird die DB geöffnet und es wird im autoexec modus halt dieser VBA Code durch gegangen.
Aber er scheint irgendwo in einer schlefe hängen zu bleiben. Das einzige was mir halt aufgefallen ist, ist das an diesem wend punkt der Code stehen bleibt und ich halt nicht genaus weiss warum er das tut, weil ohne die wend punkte scheint er ja durch zu laufen.

es wird immer beim öffnen angezeigt wann das letzte mal dieses Programm durch gelaufen ist und das war Freitag 7:38 Uhr und dann ging es nimmer.

Ich poste morgen mal den ganzen Programm teil
Bitte warten ..
Mitglied: 76109
16.02.2010 um 00:04 Uhr
Hallo lendrod!

Falls der Code tatsächlich am Wend hängen bleibt, dann versuchs mal hiermit:
01.
With CurrentDb.OpenRecordset("Reservierungen") 
02.
    Do Until .EOF 
03.
        .Delete 
04.
        .MoveNext 
05.
    Loop 
06.
   .Close 
07.
End With
Gruß Dieter
Bitte warten ..
Mitglied: lendrod
16.02.2010 um 20:45 Uhr
Danke didi1954 das werde ich mal probieren.
Seltsam ist wirklich der Umstand das dieses Programm seit 2 Jahren täglich läuft und ohne jeglich veränderung nicht mehr läuft.
Änderungen kann nur der Admin machen, und das wäre ich... Also ich habe keine Änderungen vorgenommen
Bitte warten ..
Mitglied: 76109
16.02.2010 um 23:16 Uhr
Hallo lendrod!

Für's bedanken ist es wohl noch zu früh

Vielleicht geht's, oder auch nicht?

Interessant wäre noch die Beantwortung der bereits von Biber gestellten Fragen:
Zitat von Biber:
Der Vollständigkeit halber
  • Springt denn in der Applikation selbst auch plötzlich der VBA-Editor auf oder läuft es da auch "alles wie früher"?
  • Du bist sicher, dass nicht nur im Debugger Haltepunkte auf der "Wend"-Zeile gesetzt sind?
  • Wenn du schreibst, du "übergehst" die Zeile "Wend", dann heißt das.... F7? F8? F9? oder mit welcher Taste genau?
Kann auch sein, dass ein erneutes kompilern und speichern den Fehler schon behebt?

Gruß Dieter
Bitte warten ..
Mitglied: jhinrichs
17.02.2010 um 09:50 Uhr
Hallo,

dass das Programm beim erreichen von "Wend" wieder zur "While"-Zeile springt, ist der Sinn und die Funktion von "Wend". Wenn das Programm aus dieser Schleife nicht mehr herauskommt, dann liegt es daran, dass die Bedingung ("Not.EOF") weiterhin erfüllt ist. Wenn das Recordset "Reservierungen" 1000 Items enthält, musst Du die Schleife auch 1000mal durchlaufen.

Wie oft hast Du die Schleife denn durchlaufen, bevor Du gesagt hast, es geht hier nicht mehr weiter?
Bitte warten ..
Mitglied: lendrod
18.02.2010 um 12:47 Uhr
Hallo,

Also wenn die User die DB öffnen kommt eine meldung die Zeigt wann der letzte Dateiabgleich gemacht worden ist.
Wenn er zu alt ist kann man mit ja einen neuen machen.
Dort bleibt er dann auch stehen.
Für normal ist es in max 30sek fertig.
Die Anwendung kann nur noch über den Task Manager beendet werden.
Leider habe ich nciht genug ahnung um von dort aus in den Debug zu kommen oder mir anziegen zu lassen an welcher stelle er den steht.

Das mit der Wend schleife ist natürlich intressant, ich weiss natürlich nciht wie öft er durch die Schleife muss, ich bin am Ende wenn ich mit F8 zu Wend gekommen bin habe ich mit der Maus einfach den Courser manuell darüber geschoben.
Bitte warten ..
Mitglied: Biber
18.02.2010 um 17:55 Uhr
Moin lendrod,

ich fürchte, du überforderst uns jetzt ein wenig.

Bis vor kurzer Zeit war die Rede davon, das "Access 2000 VB Code plötzlich hängenbleibt" und irgendwie magisch-magnetisch von einem coolen Szene-Wort namens "Wend" angezogen wird.

Die zwei Zentimeter Codefragment rund um dieses "Wend" eiern über eine Tabelle "Reservierungen", über die auch keine Details bekannt sein müssen, da einfach pauschal alle Datensätze gelöscht werden. Zwar einzeln, Satz für Satz, statt mit einem "DELETE FROM (ohne WHERE)" ...
... ungewöhnlich, aber positiv formuliert ein Indiz für Fleiß, Sorgfalt und Geduld.

Auf dieses daumenbreite Stückchen Code haben nun 100 Leute draufgeschaut, um genau dort vielleicht doch irgendwelche Verdachtsmomente zu finden ... vergeblich.

Jetzt, gefühlte Jahre später, erwähnst du beiläufig, dass eventuell vorhandene User vielleicht eine Option ausgewählt haben könnten, die sich "Dateiabgleich" nennt.
Und dass die APPZ von dort nicht in vertretbarer Zeit zurückkehrt.

Okay, ich kann mir nicht vorstellen, dass deine Vorhänge-Dingens oder wie du sie nennst eine Funktion "Alle Reservierungen plattmachen" euch verkauft hat als "Dateiabgleich".
Da wird vermutlich etwas anderes passieren.

  • Was? Und mit wem? Lokal, global, Abgleich mit den Outlook-Kalendern von 3000 Usern oder zwei Oracle-Datenbanken in Taiwan oder wer gleicht wen ab?
  • Von wieviel "Datenvolumen" reden wir denn, wenn dieses "Dateiabgleichen" schon 30 Sekunden unter normalen Bedingungen braucht?
  • Hängt dieses Access im Netz für 55 User, die alle "Admin" heißen? Oder ist es eine in Frontend- und Daten-MDB geteilte Appz?

Wenn sich herausstellt, dass eigentlich nur das Löschen oder das Index-Neuanlegen nicht ging, weil vielleicht noch ein paar andere User diese Appz auf dem Monitor brennen haben und grad kein exklusiver Zugriff möglich war...

UND wir diese Informationen erst nach Tagen bekommen...

.. dann bin ich etwas ärgerlich.

Grüße
Biber
Bitte warten ..
Mitglied: lendrod
22.02.2010 um 09:13 Uhr
Ich muss sagen das die letzte Antwort von Biber mich sehr zum schmunzeln gebracht hat.
Und er hat ja recht, was ich aber auch schon mal einen Schritt nach vorne gebracht hat.

Dann werde ich mal den rest von dem Code auch Posten:
01.
Option Compare Database 
02.
 
03.
Public Function Gastdaten_holen() 
04.
 
05.
Dim PlNr, Stat As String 'Reservierungen 
06.
Dim Anr, Abr As Date 
07.
Dim Kat, BuNr, Aufent As Long 
08.
 
09.
 
10.
'Reservierungen löschen 
11.
With CurrentDb.OpenRecordset("Reservierungen") 
12.
 While Not .EOF 
13.
  .MoveFirst 
14.
   .Delete 
15.
  .MoveNext 
16.
 Wend 
17.
 
18.
Ich hoffe der Code ist nun nicht zu lang. 
19.
 .Close 
20.
End With 
21.
 
22.
'Counter = 0 
23.
'Reservierungen updaten 
24.
With CurrentDb.OpenRecordset("Select Nr, Kategori, BAN, BAB, Status, BookingNr, KundLbNr from ssc_Bookings_byDay") 
25.
 .MoveFirst 
26.
 While Not .EOF 
27.
    
28.
   'Inc (Counter) 
29.
   'Print "Akt Record " + Counter 
30.
    
31.
   PlNr = !NR 
32.
   Kat = !Kategori 
33.
   Anr = DateAdd("d", -2, Format(!BAN, "dd.mm.yyyy"))  'Format(!BAN, "dd.mm.yyyy") 
34.
   Abr = DateAdd("d", -2, Format(!BAB, "dd.mm.yyyy"))  'Format(!BAB, "dd.mm.yyyy") 
35.
   Aufent = DateDiff("d", Anr, Abr) 
36.
   Stat = !Status 
37.
   GaNr = !KundLbNr 
38.
   BNu = !BookingNr 
39.
   HNR = 0 
40.
      With CurrentDb.OpenRecordset("Reservierungen") 
41.
       .AddNew 
42.
        !PlatzNr = PlNr 
43.
        !Kategorie = Kat 
44.
        !BAN = Anr 
45.
        !BAB = Abr 
46.
        !Aufenthalt = Aufent 
47.
        !Status = Stat 
48.
        !GNR = GaNr 
49.
        !BNR = BNu 
50.
       .Update 
51.
       .Close 
52.
      End With 
53.
    BuNr = 0 
54.
  .MoveNext 
55.
 Wend 
56.
.Close 
57.
End With 
58.
'MsgBox "Reservierungen fertig" 
59.
Call Mitglholen 
60.
Call Gastname_aktualisieren 
61.
With CurrentDb.OpenRecordset("HDatum") 
62.
 .AddNew 
63.
 !Dholen = Date 
64.
 !Dtimeholen = Time() 
65.
 .Update 
66.
 .Close 
67.
End With 
68.
End Function 
69.
 
70.
 
71.
Public Function Mitglholen() 
72.
 
73.
Dim VN, NM, HTxt, H2Txt, Sex, DText, HGNR As String 'Mitglieder 
74.
Dim Anzahl, GNR, LNr As Long 
75.
Dim Gebu As Date 
76.
 
77.
'Mitglieder löschen 
78.
With CurrentDb.OpenRecordset("Mitglieder") 
79.
 While Not .EOF 
80.
  .MoveFirst 
81.
   .Delete 
82.
  .MoveNext 
83.
 Wend 
84.
 .Close 
85.
End With 
86.
'Familienmitglieder 
87.
 
88.
 
89.
 With CurrentDb.OpenRecordset("Select GNR, DATUM, NotatKey, LinNr, Tekst, Status From G_Anwesende_Mitglieder") 
90.
 If Not .EOF Then 
91.
 .MoveFirst 
92.
  While Not .EOF 
93.
   If !NotatKey > 0 Then 
94.
     If !LinNr = 2 Then 
95.
         HTxt = Left(!Tekst, 2) 
96.
        If HTxt Like "m^*" Or HTxt Like "w^*" Or HTxt Like "G^*" Then 
97.
         GNR = !NotatKey 
98.
         LNr = !LinNr 
99.
         VN = "K" 
100.
         NN = "K" 
101.
         Sex = Left(!Tekst, InStr(Trim(!Tekst), "^") - 1) 
102.
         H2Txt = Mid(!Tekst, InStr(Trim(!Tekst), "^") + 1) 
103.
         If Not H2Txt Like "" Or H2Txt Like "     *" Then 
104.
          H2Txt = Mid(!Tekst, InStr(Trim(!Tekst), "^") + 1) 
105.
         End If 
106.
         If Not H2Txt Like "   *" Or H2Txt Like "" Then 
107.
           H2Txt = Left(H2Txt, InStr(H2Txt, "^") - 1) 
108.
         End If 
109.
         If IsDate(H2Txt) = True Then DText = Format(H2Txt, "dd.mm.yyyy") 
110.
         If IsDate(H2Txt) = False Then DText = "01.01.1910" 
111.
         Anzahl = 1 
112.
        Else 
113.
         If HTxt Like "^*" Then 
114.
          GNR = !NotatKey 
115.
          LNr = !LinNr 
116.
          VN = "K" 
117.
          NN = "K" 
118.
          Sex = "o" 
119.
          Gebu = "01.10.1910" 
120.
          Anzahl = 1 
121.
         End If 
122.
        End If 
123.
     Else 
124.
       If !LinNr > 2 Then 
125.
         GNR = !NotatKey 
126.
         LNr = !LinNr 
127.
         H2Txt = Mid(!Tekst, InStr(Trim(!Tekst), "^") + 1) 
128.
         VN = Left(!Tekst, InStr(Trim(!Tekst), "^") - 1) 
129.
         If H2Txt Like "" Or H2Txt Like "     *" Then 
130.
          NN = "K" 
131.
         Else 
132.
          NN = Left(H2Txt, InStr(H2Txt, "^") - 1) 
133.
         End If 
134.
         H2Txt = Mid(H2Txt, InStr(H2Txt, "^") + 1) 
135.
         If H2Txt Like "m^*" Or HTxt Like "w^*" Or HTxt Like "G^*" Then 
136.
          Sex = Left(H2Txt, InStr(H2Txt, "^") - 1) 
137.
         Else 
138.
          Sex = "o" 
139.
         End If 
140.
         If Not H2Txt Like "" Or H2Txt Like "     *..." Then 
141.
          H2Txt = Mid(H2Txt, InStr(H2Txt, "^") + 1) 
142.
          H3Txt = Mid(H2Txt, InStr(H2Txt, "^") + 1) 
143.
          If H2Txt Like "" Or H2Txt Like "     *" Then 
144.
            H2Txt = "" 
145.
          Else 
146.
           H2Txt = Left(H2Txt, InStr(H2Txt, "^") - 1) 
147.
          End If 
148.
         End If 
149.
          If IsDate(H2Txt) = True Then DText = Format(H2Txt, "dd.mm.yyyy") 
150.
          If IsDate(H2Txt) = False Then DText = "01.01.1910" 
151.
         If H3Txt Like "1*" Or H3Txt Like "2*" Or H3Txt Like "3*" Or H3Txt Like "4*" Or H3Txt Like "5*" Or H3Txt Like "6*" Or H3Txt Like "7*" Or H3Txt Like "8*" Or H3Txt Like "9*" Then 
152.
          Anzahl = Left(H3Txt, InStr(H3Txt, "^") - 1) 
153.
         Else 
154.
          Anzahl = 0 
155.
         End If 
156.
       End If 
157.
      End If 
158.
     If GNR > 0 Then 
159.
      With CurrentDb.OpenRecordset("Mitglieder") 
160.
       .AddNew 
161.
        !GNR = GNR 
162.
        !LinNr = LNr 
163.
        If VN Like "" Then !Vorn = "K" Else !Vorn = VN 
164.
        If NN Like "" Then !Nachn = "K" Else !Nachn = NN 
165.
        !Gebdat = DText 
166.
        !Anzahl = Anzahl 
167.
        If Sex = "" Then !Sex = "o" Else !Sex = Sex 
168.
       .Update 
169.
       .Close 
170.
      End With 
171.
     End If 
172.
    End If 
173.
    VN = "" 
174.
    NN = "" 
175.
    Geb = "00.00.0000" 
176.
    Anzahl = 0 
177.
    Sex = "" 
178.
    HTxt = "" 
179.
    H2Txt = "" 
180.
    H3Txt = "" 
181.
    GNR = 0 
182.
  .MoveNext 
183.
  Wend 
184.
  .Close 
185.
 End If 
186.
 End With 
187.
 
188.
 
189.
 
190.
End Function 
191.
 
192.
Public Function Gastname_aktualisieren() 
193.
Dim HGNR As Long 
194.
Dim Hnam As String 
195.
 
196.
 
197.
 
198.
Set RS = CurrentDb.OpenRecordset("Select LinNR, GNR, Vorn, Nachn From Mitglieder Where LinNr = 2") 
199.
 
200.
If Not RS.EOF Then 
201.
  RS.MoveFirst 
202.
   
203.
  While Not RS.EOF 
204.
  If RS!Vorn Like "K" And RS!Nachn Like "K" Then 
205.
    HGNR = RS!GNR 
206.
    
207.
    Set RS2 = CurrentDb.OpenRecordset("Select KundLbNr, Navn From CAMPKUND Where KundLbNr = " & HGNR) 
208.
    If Not RS2.EOF Then 
209.
      Hnam = Trim(RS2!Navn) 
210.
      If Not Hnam Like "" Then 
211.
        RS.Edit 
212.
        RS!Nachn = Hnam 
213.
        RS.Update 
214.
      End If 
215.
    End If 
216.
    RS2.Close 
217.
     
218.
  End If 
219.
  HGNR = 0 
220.
  Hnam = "" 
221.
  RS.MoveNext 
222.
  Wend 
223.
End If 
224.
End Function 
225.
 
[Edit Biber] Codetags gesetzt, falls wir über die eine oder andere Zeilennummer sprechen wollen [/Edit]
Bitte warten ..
Mitglied: lendrod
22.02.2010 um 10:08 Uhr
Fragt mich nicht warum, aber seit Samstag scheint es wieder zu funktionieren ohne das ich irgendetwas geändert habe.

Manchmal passieren Dinge zwischen Himmel und Hölle die sich meiner Kenntnis völlig entziehen.

Aber es geht ja nun wieder.. bis zum nächsten Freitag den 13.

Danke für die Hilfe.
Bitte warten ..
Mitglied: Biber
22.02.2010 um 10:22 Uhr
Moin lendrod,

Zitat von lendrod:
Fragt mich nicht warum, aber seit Samstag scheint es wieder zu funktionieren ohne das ich irgendetwas geändert habe.

War eventuell am Freitag eine blaubekittelte Reinigungsfachkraft da und hat die Brötchenkrümel aus deiner Tastatur abgesaugt?

Anyway -es uns hätte Schlimmeres widerfahren können an einem Montachmorgen...

Grüße
Biber
Bitte warten ..
Mitglied: 76109
22.02.2010 um 10:50 Uhr
Hallo lendrod!

Zitat von lendrod:
Aber es geht ja nun wieder.. bis zum nächsten Freitag den 13.
So ein Glück! Der nächste Freitag den 13. ist erst am 13.August

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows 7
Windows installation bleibt hängen (13)

Frage von jensgebken zum Thema Windows 7 ...

Batch & Shell
gelöst Powershell Windows Update Management - get-WUinstall bleibt hängen (10)

Frage von MartinAD zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...