PDA

Vollständige Version anzeigen : Kapitel "VBA"


Andre Minhorst
13.01.2007, 15:17
Hallo Betaleser,

ein weiteres Kapitel steht zum Download bereit. Es geht um VBA:

Download VBA-Kapitel (http://www.access-entwicklerbuch.de/2007/index.php?page=leseproben)

Viele Grüße
André

J_Eilers
15.01.2007, 07:44
Moin Andre,

Gleich in der Einleitung sollte der graue Kasten irgendwohin, wo er nicht den Lesefluss stört. Also vielleicht ans Ende des Kapitels.

[AM: Klar, das wird natürlich noch schön gemacht. Wenn ich den ganzen Kram aber für die Preview ordentlich setzt, dann Eure Vorschläge, die des Fachlektorats und auch noch die des sprachlichen Lektorats einarbeite und noch mal alles setze, kostet das ein wenig zuviel Zeit... ;-)]

6.2 Ein Hinweis darauf, dass man keine reservierten Worte verwendeten sollte, kann eigentlich nie Schaden.

[AM: Ganz im Gegenteil. Ich dachte, ich hätte das drin... wahrscheinlich bei den Feldnamen im Tabellen-Kapitel...]

6.3.4 Wie weiter oben bereits erwähnt, sollten Sie Fortsetzungen umbrochener Zeilen einrücken

--> Heißt das nicht umgebrochener?

Die extrem umbrochene Variante sieht so aus –

--> Das Gleiche.

[AM: Laut ISBN-13: 978-3411040148 ist "umbrochen" in Ordnung. ;-)]


IMHO gibt es für die Verkettung mit & _ eine maximale Anzahl.

[AM: Stimmt! Es sind 25. Ich werde es anmerken.]

Auch wäre vielleicht diese Variante von Interesse

strSQL = ".."
strSQL = strSQL & ".."

[AM: Gute Idee.]


6.6.6. Number of the Beast oder vielleicht auch ein Hinweis auf Option Explicit?

[AM: Steht in einem anderen Kapitel, aber ich werde es auch hier einfügen. Ist sogar ein besserer Platz dafür.]

6.7.3. Hinweis auf Step?

[AM: Ja, fehlt. Kommt noch.]


6.7.4. Den Hinweis auf die i-Variante finde ich in diesem Beispiel etwas an den Haaren herbeigezogen. Denn den Code kann man auch kürzer schreiben und dann ist der Unterschied marginal. Schöner wäre vielleicht ein Beispiel bei dem man nicht direkt auf .Count zugreifen kann. Wobei mir gerade keins einfällt :(

[AM: Kürzer schreiben: Du meinst, indem man intAnzahlFormulare weglässt und CurrentProject.AllForms.Count direkt in die Schleife schreibt? Stimmt, ist kürzer, entspricht aber nicht meinen Vorstellungen von Übersichtlichkeit.]

6.7.5. Eine While-Schleife kann man nicht mit Exit beenden, sondern nur, wenn das Kriterium erfüllt. Und ich würde vllt eine kleine Tabelle einbauen, die die Unterschiede von For/Do/While verdeutlicht.

[AM: Doch, kann man. Mit "Exit Do".]

6.7.7. Sprungmarken gehören wohl mehr zu DOS, als zu neuen Programmiersprachen. Die einzige sinnvolle Verwendung, die ich dafür habe, sind Fehlerbehandlungen.

[AM: Das kann man durchaus so eingrenzen.]

6.8.2. Sehe ich anders. Alle Programmiersprachen sind in Englisch und die bereitgestellten Funktionen/Methoden und Objekte auch. Warum soll ich dabei einen Bruch begehen?

[AM: In vielen Datenbankanwendungen ist alles benutzerdefinierte deutsch - Benutzeroberfläche, Objektnamen, Tabellennamen, Feldnamen. Warum soll ich eine Tabelle tblKontakte nennen und die passende Recordset-Variable rstContacts? Das wäre dann auch ein Bruch. Ich halte das wirklich für Geschmacksache, und da alle Leser des Buchs deutsch sprechen und nur ein (wenn auch sehr großer) Teil englisch, mache ich es der Mehrheit so einfach wie möglich.]

6.8.5. Anzahl der Werte, die zurückgegeben werden können und Typendeklaration der Rückgabewerte?

[AM: Was meinst Du mit Typendeklaration?]

6.9. MZTools? Ich habe da keinen Link gefunden.

[AM: Stehen im Anhang des Buchs. Werde den Link aber auch hier unterbringen.]

Generell: Sicher ein schwieriges Kapitel und nicht leicht zu behandeln, deswegen bitte meine Kritik positiv und nicht negativ verstehen.

[AM: Ich stelle das ja extra hier rein, um auf die Socken zu bekommen. Kritik ist also in Ordnung und - noch viel mehr - sehr willkommen. Umso weniger hauen mit dann das fertige Buch um die Ohren. ;-)]

Der Aufbau ist gut und ich denke es sind viele Punkte angesprochen worden.

- Der dauernde Verweis auf Reddick und wie man es nun macht, ist gut, aber dreimal ist Bremer Recht und 4 mal liest man nicht mehr.

[AM: Ich schaue mal, ob es mir auch zuviel vorkommt.]

- Hab gerade die Nummer vergessen. ByVal/ByRef vielleicht sollte man die beiden Wörter auch hineinschreiben und nicht nur eines. Erklärt sind sie ja beide.

[AM: Schaue ich nach.]

- Für Einsteiger ist es sicherlicht ausreichend, auch wenn ich es besser finden würde, wenn man sich vllt eine Aufgabe setzt und diese versucht im Kapitel auf unterschiedliche Arten löst und die Unterschiede aufzeigt. (Wie mit den Schleifen umgesetzt)

[AM: Gute Idee, aber irgendwann ist auch mal der Platz am Ende. Genügend Beispiele für den Einsatz finden sich ja noch in den anderen Kapiteln.]

Ansonsten ist es, wie fast bei allen Programmiersprachen...man freut sich auf ein wichtiges Kapitel und die Erwartungen sind zu hoch. Aber ich habe selber keine Vernünftige Idee, weil es einfach spüren muss. JM2C.

[AM: Es ist halt "nur" ein VBA-Kapitel, und einige kennen halt schon fast alles daraus - aber der tägliche Blick in die Foren und ins Usenet zeigt, dass es immer noch Lücken gibt.

Davon ab: Vielen Dank für's sorgfältige Lesen, die Anregungen werde ich wie kommentiert umsetzen.]

J_Eilers
15.01.2007, 10:19
Weil ich nicht editieren kann ;)

6.7.4. Ich empfinde dabei keinen allzu großen Unterschied

Public Function FormulareAusgeben()
Dim frm As AccessObject

For Each frm In CurrentProject.AllForms
Debug.Print frm.Name
Next frm
End Function

Public Function FormulareAusgebenMitForNext()
Dim i As Integer


For i = 0 To CurrentProject.AllForms.Count - 1
Debug.Print CurrentProject.AllForms(i).Name
Next i
End Function

BTW Im For Next Beispiel kann die Variable frm entfernt werden.

6.7.5. Das macht dein Kompiler mit?

Function xy()
Dim i As Long

While i < 10
Debug.Print i
If i = 5 Then Exit Do
i = i + 1
Wend
End Function

[AM: Ich meinte eine Do While-Schleife. Missverständnis!]

6.8.5. Function xyz () As Long. Eine Deklaration des Rückgabewertes der Funktion. Hierbei fällt mir gleich noch ein, dass man das bei Variablen auch mit angeben kann: Eine Variable sollte immer so groß wie nötig und so klein wie möglich sein. Auch wenn der RAM heutzutage nicht mehr der Flaschhals sein sollte und unter VBA kaum rücksicht darauf zu nehmen ist. Und hier ist auch ByVal/ByRef zu finden.

[AM: Kommt im Performance-Kapitel.]

Nachtrag: Der Aufbau stimmt schon, es ist halt nur meine erhöhte Erwartung gewesen, die mich zu dieser Aussage bewegt hat. Es sind alle wichtigen Punkte drin: Variablen und Konstanten, Private und Public, If und Select Case, alle Schleifen und die gerenelle Verwendung von Funktionen und Prozeduren. Hier könnte man vielleicht die Unterschiede noch ein wenig klarer herausholen.

Da ich nun nicht weiß, was du noch alles wo schreiben willst. Mir kam eben noch der Gedanke des Direktfensters (weil du es selber verwendest) und ggf ein Absatz, wie man Code debuggt. (Überwachung, Einzelschritte, Haltepunkte, Direktfenster)

[AM: Kommt im Kapitel "Debuggen, Fehlerbehandlung und Fehlerdokumentation".]

Tut mir leid, wenn ich mit dem letzten übers Ziel hinaus gehe, aber man denkt schnell weiter und es sollte ja kein Buch in 12 Bänden werden ;)

[AM: Je mehr Hinweise, desto besser. ;-)]

Vllt schaffe ich heute auch noch DAO.

R J
15.01.2007, 10:39
Hi Andre,

zum Kapitel Do While:

Wend wird m. E. nach nur noch aus nostalgischen Gründen mitgeschleppt. Es wäre zu überlegen, ob man das dem Leser noch mit auf den Weg geben muß. Aber vermißt habe ich die Möglichkeit mit UNTIL. Es ist eine weitere, interessante und zeitgemäße Variante der Gestaltung von Bedingungen.

[AM: Habe ich aufgenommen. Danke für den Tipp!]