PDA

Vollständige Version anzeigen : Makro funktioniert >>> Konvertiert in Modul >>> Absturz ???


AWSW
11.05.2001, 22:14
Hallo,
jetzt habe ich mal eine für mich unerklärliche Sache entdeckt...
Ich habe seit Monaten ein Makro in einer DB im Einsatz, das den Inhalt von 5 Tabellen löscht...
Im Zuge einer Aufräumaktion in der DB habe ich alle Makros erfolgreich in Module konvertiert. Bis auf dieses eine.
Nach dem ich dieses Modul an Stelle des Makros hinter den Button gelegt habe und nutze, schmiert dann Access ab :( ???

Das kann ich mir nicht erklären, da es sich doch um das konvertierte Makro handelt, dass immer hervorragend funktionierte...

Ich habe Euch mal eine BeispielDB dazu hochgeladen, um das Problem zu verdeutlichen: ModulMakro.zip

Ich hoffe Ihr könnt mir dabei helfen, da ich sonst doch wieder Makroleichen in der DB habe...

Manuela Kulpa
12.05.2001, 17:30
<font face="Verdana" size="2">Hallo Axel!

Zu deinem konvertieren Makro möchte ich mich nicht äußern (ach doch, es fehlt ein kleines <font face="Courier New" size="3">DoCmd.Echo True, ""</font> am Ende der Funktion) :)! Nichts desto ein kleiner Ratschlag, wie du das Löschen vereinfachen könntest:

<FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Function</FONT> DelRecordTab() <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Boolean</FONT>

<FONT COLOR=#008000>' drei kleine Hilfsvariablen</FONT>
<FONT COLOR=#000080>Dim</FONT> i <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>
<FONT COLOR=#000080>Dim</FONT> sTable <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>Dim</FONT> sSQL <FONT COLOR=#000080>As String</FONT>

<FONT COLOR=#008000>' der Tabellenname (*grrrrrr*, mit Leerschritt)</FONT>
sTable = "Daten "

<FONT COLOR=#008000>' eine kleine Vorabfrage</FONT>
<FONT COLOR=#000080>If</FONT> MsgBox("Möchten Sie wirklich alle Datensätze löschen?", _
vbQuestion + vbYesNo + vbDefaultButton1, _
"Frage") = vbYes <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#008000>' eine kleine Schleife über deine Tabellen</FONT>
<FONT COLOR=#000080>For</FONT> i = 1 <FONT COLOR=#000080>To</FONT> 5
<FONT COLOR=#008000>' der Aufbau der Löschabfrage</FONT>
sSQL = "DELETE * FROM [" & sTable & i & "]"
<FONT COLOR=#008000>' die Ausführung</FONT>
CurrentDb.Execute (sSQL)
<FONT COLOR=#008000>' nächste Tabelle</FONT>
<FONT COLOR=#000080>Next</FONT> i
<FONT COLOR=#008000>' Die Info</FONT>
MsgBox "Alle Datensätze erfolgreich gelöscht!", vbInformation, "Hinweis"
<FONT COLOR=#000080>Else</FONT>
<FONT COLOR=#008000>' Der Abbruch</FONT>
MsgBox "Verarbeitung abgebrochen!", vbInformation, "Hinweis"
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Function</FONT>

</FONT>
Ich hoffe, du nimmst mir den Ratschlag nicht böse!

Liebe Grüße

PS: Kleiner Ratschlag am Rande, schau dir doch mal folgende FAQ von Karl Donaubauer bezüglich der Benamsungen von Objekten an!

<a href="http://www.donkarl.com/AccessFAQ.htm?/FAQ/FAQ1Grundlagen.htm" target="_blank">FAQ 1.5 - Benamsungen</a></FONT>

AWSW
12.05.2001, 17:40
Sonniger Gruß aus Siegen an Dich :cool:

Nein böse auf keinen Fall :)

Ich bin immer froh, wenn ich was dazu lernen kann. Habe das mit den Leerzeichen in den Tabellen, Formularen bei der eigentlichen Generierung der DB nicht so wahrgenommen, da ich fast alles, wie oben erwähnt, mit Makros erstellt hatte. Da ich aber aus diesem "Alter" jetzt raus will, habe ich damit, die entsprechenden Probs...

Vielen Dank besonders für die, mir sehr hilfreichen Kommentarzeilen --- bin noch so ein kleiner VB - DAU :D

Also Danke Dir, ich werde das gleich mal einbauen...

Günni
12.05.2001, 18:05
Ich hab auch mal ein Auge riskiert ;-) und kann mich Manuela nur anschließen. Wenn Du gerade dabei bist, dem Makro-Alter zu entwachsen, solltest Du Dir auch Gedanken zum Datenbank-Design machen, denn auch die Tabellenstrukturen wären doch noch etwas optimierbar. Das Stichwort hierbei heißt Datennormalisierung. Da Du die Datenbank anscheinend kommerziell nutzt, solltest Du Dir vielleicht überlegen, Dir proffesionelle Hilfe für die Entwicklung zu sichern. Es gibt nämlich nix frustrierenderes als mit nicht 100% optimalem Werkzeug arbeiten zu müssen.

AWSW
12.05.2001, 21:05
Hallo Günni,
Danke für die Info. Aber ich habe das Programm eigentlich nur für meine Arbeit entwickelt. Mittlerweile nutzen es zwar auch einige Kollegen, aber als kommerzielle Nutzung möchte ich das nicht bezeichnen. Deine Idee mit der Unterstützung ist grundsätzlich gut, aber ich möchte dass so weit es eben geht, selbst lösen, um den Lerneffekt zu erzielen...
Ich hatte die komplette Funktion schon erzielt, bis auf die paar Makros, die nun dran glauben müssen :D. Da meine eigenen Ansprüche an das Programm aber stark gestiegen sind, komme ich halt mit den Makros nicht mehr aus. Außerdem habe ich festgestellt, das die Abarbeitung der Prozeduren mit Makros im Vergleich zu VBA gähnend langsam ist und man eine höhere Fehlertoleranz bei VB erhält als bei Makros.
Danke aber für Deinen Beitrag, aber wie gesagt, möchte ich soweit es geht selber ran. Ich hoffe aber, das Du mir auch in Zukunft etwas helfen kannst... :) Danke Dir


Noch mal an Manuela – Vielen Dank – Klappt SUUUUUUPPPPPEERRR :D