Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Probleme mit Code!
zurück: Langsame Anzeige bei Kombinationsfeld weiter: Nach Kategorie mit hilfe vom Checkbox sortieren Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
wimmera
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. März 2010, 13:34
Rufname: Wimmsti
Wohnort: St.Johann im Pongau (Salzburg)

Probleme mit Code! - Probleme mit Code!

Nach oben
       Version: Office 2003

Hallo zusammen.

Von unserer Tochtergeselschaft wurde vor einiger Zeit eine DB Programiert.
Leider haben die Anwender Probleme mit dieser und den Programierer gibt es leider nicht mehr.
Jetzt habe ich dises Ding in die Hände bekommen und ich kann mit folgenden Code nichts anfangen. Ich verstehe den Sinn dahinter nicht.

Code:
Private Sub Form_Load()
Dim db As Database
Dim rst As Recordset
Dim i As Long

Set db = OpenDatabase("C:\Kassa\Kassabuch.mdb")
Set rst = db.OpenRecordset("Kassa")
i = rst.RecordCount
If i > 0 Then
    rst.MoveLast
    a = rst![BelegNr]
Else
    a = 1
    i = 0
End If
DoCmd.GoToRecord acDataForm, "Fm_BuchForm", acGoTo, i + 1
bma = Me.CurrentRecord
End Sub


Die DB funktioniert, wenn ich einen Order mit dem Namen Kassa auf C: anlege und die selbe DB reinkopiere.
Diese sollte aber von mehreren anwendern vom Netzwerk aus angewendet werden.

Danke für Eure Hilfe

Gruß
Alex
ebs17
Learning by Doing - Bastler


Verfasst am:
02. März 2010, 14:27
Rufname:
Wohnort: Reinsberg


AW: Probleme mit Code! - AW: Probleme mit Code!

Nach oben
       Version: Office 2003

Code:
Set db = OpenDatabase("C:\Kassa\Kassabuch.mdb")

Diese Zeile öffnet eine externe DB unter dem angegebenen Pfad. Falls Ihr nur eine DB verwendet, wäre die Verwendung der aktuellen DB sinnvoller:
Code:
Set db = CurrentDb


Ansonsten wird durch den Code im Formular der Fokus auf den letzten Tabelleneintrag der Tabelle "Kassa" gelegt (falls es einen gibt).

_________________
Mit freundlichem Glück Auf!

Eberhard
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. März 2010, 14:28
Rufname:
Wohnort: NRW

AW: Probleme mit Code! - AW: Probleme mit Code!

Nach oben
       Version: Office 2003

Hallo,

so wie ich das sehe, wird beim Laden des Formulars der letzte Wert der Spalte "BelegNr" aus Tabelle "Kassa" in einer "Kassabuch.mdb" gelesen und zu dieser Nr. + 1 gesprungen, was wohl gleichbedeutend mit einem neuen Datensatz ist. Das würde aber voraussetzen, dass die BelegNr lückenlos aufsteigend gefüllt wird. Genausogut könnte man dann die Anzahl der Datensätze oder den Wert mit der DMax-Methode auslesen.
Was aber ganz sicher fehlt, ist das Schließen bzw. Freigeben der benutzten Objektvariablen (db, rst).

Wenn die "Kassabuch.mdb" an einem anderen Ort liegt, so wäre hier der Pfad zu korrigieren.

Der Code ist allerdings äußerst fragwürdig und sicherlich ist die Sache anders und deutlich einfacher zu lösen.
Dazu folgende Fragen:
- wie heißt das Formular zu dem gezeigten Code
- wie lautet seine Datenherkunft
- arbeitet die Anwendung mit der Kassabuch.mdb zusammen (Frontend/Backend)
- stimmt meine Theorie, dass beim Öffnen des Formulars auf einen neuen Datensatz gesprungen wird
- wozu dient die Variable bma

_________________
Gruß MissPh!
wimmera
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. März 2010, 16:12
Rufname: Wimmsti
Wohnort: St.Johann im Pongau (Salzburg)

AW: Probleme mit Code! - AW: Probleme mit Code!

Nach oben
       Version: Office 2003

Danke für Eure Antworten.

Zitat:
wie heißt das Formular zu dem gezeigten Code


Fm_BuchForm

Zitat:
wie lautet seine Datenherkunft


Ab_BuchForm

Zitat:
- arbeitet die Anwendung mit der Kassabuch.mdb zusammen (Frontend/Backend)


Nein.

Zitat:
- stimmt meine Theorie, dass beim Öffnen des Formulars auf einen neuen Datensatz gesprungen wird


Deine Theorie ist richtig.

Zitat:
- wozu dient die Variable bma


Es tut mir leid, ich habe keine Ahnung für was das steht.

ich habe den ganzen Code des Formulars mal reingestellt und hoffe das dass hilft.

Code:
Option Compare Database
Option Explicit
Public a As Long

Dim bm, bma As Long

Private Sub Befehl69_Click()
DoCmd.Close
End Sub

Private Sub Beleg_Nr_LostFocus()
a = Forms![Fm_BuchForm]![BelegNr].Value
End Sub

Private Sub Form_Current()
Dim frm As Form
Set frm = Forms![Fm_BuchForm]
If frm.NewRecord = True Then
    a = a + 1
    bm = frm.CurrentRecord
    If bm = bma Then
        a = a - 1
    Else
        bma = bm
    End If
    frm![BelegNr].Value = a
    DoCmd.GoToControl ("Beleg-Nr")
End If
End Sub

Private Sub Form_Load()
Dim db As Database
Dim rst As Recordset
Dim i As Long

Set db = OpenDatabase("C:\Kassa\Kassabuch.mdb")
Set rst = db.OpenRecordset("Kassa")
i = rst.RecordCount
If i > 0 Then
    rst.MoveLast
    a = rst![BelegNr]
Else
    a = 1
    i = 0
End If
DoCmd.GoToRecord acDataForm, "Fm_BuchForm", acGoTo, i + 1
bma = Me.CurrentRecord
End Sub



Private Sub KassaKonto_LostFocus()
DoCmd.GoToControl ("Beleg-Nr")
End Sub



Private Sub Text48_GotFocus()
Dim db As Database
Dim rst1 As Recordset
Dim a As String
Dim i As Single

Set db = OpenDatabase("C:\Kassa\Kassabuch")
Set rst1 = db.OpenRecordset("FWaehrung")

a = Forms![Fm_BuchForm]![Währung].Value
i = 0
rst1.MoveFirst
Do While Not (rst1!FWKennzeichen = a)
    rst1.MoveNext
Loop

Forms![Fm_BuchForm]![Text48].Value = rst1!FWKurs

rst1.Close
db.Close
End Sub



Gruß
Alex
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. März 2010, 16:30
Rufname:
Wohnort: NRW

AW: Probleme mit Code! - AW: Probleme mit Code!

Nach oben
       Version: Office 2003

Es gäbe tatsächlich so einiges zu optimieren, ich denke aber, du solltest besser die Finger davon lassen und lediglich dafür sorgen, dass der Zugriff auf die Datenbank korrekt läuft - ganz nach dem Motto "never change a running system"!
Schließlich wird das ja nicht der einzige Code sein, der auf diese Art programmiert wurde.

Dass die dort angesprochene DB nichts mit der Anwendung zu tun hat, fällt mir jedoch schwer zu glauben. Wozu dann der Zugriff auf die BelegNr? Was hat "deine" Belegnummer mit der in der anderen DB zu tun?

Wenn du es dir einfach machen willst, so änderst du den Zugriffspfad überall wo er gebraucht wird auf den tatsächlichen Pfad - that's all!
Etwas besser wäre es, ihn variabel zu halten und z.B. in einer internen Tabelle zu speichern und bei Bedarf mit der DLookUp-Methode auszulesen.

_________________
Gruß MissPh!
wimmera
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. März 2010, 17:47
Rufname: Wimmsti
Wohnort: St.Johann im Pongau (Salzburg)


AW: Probleme mit Code! - AW: Probleme mit Code!

Nach oben
       Version: Office 2003

Danke für Eure Komentare.

Schönen Gruß
Alex
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Code verschachteln 5 littlejohn 421 01. Okt 2012, 09:40
KlausMz SQL Code verschachteln
Keine neuen Beiträge Access Tabellen & Abfragen: VBA Code in Makro einbinden uns ausführen! 3 Gast 6975 12. Mai 2011, 17:32
MissPh! VBA Code in Makro einbinden uns ausführen!
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrere Bedingungen in einer Abfrage OHNE VB.Code, geht das? 9 derSkipper 420 26. Apr 2011, 23:33
Gast Mehrere Bedingungen in einer Abfrage OHNE VB.Code, geht das?
Keine neuen Beiträge Access Tabellen & Abfragen: Warum ändert Access den sql code? 12 abraxa 704 19. Jul 2009, 20:55
abraxa Warum ändert Access den sql code?
Keine neuen Beiträge Access Tabellen & Abfragen: schnelle komplexe Abfrage per Code? 4 SaschaR 586 25. März 2008, 15:57
SaschaR schnelle komplexe Abfrage per Code?
Keine neuen Beiträge Access Tabellen & Abfragen: Excel zellen in Access Tabelle kopieren mit einem VBA code 10 SzP/TEF13 1846 09. Nov 2007, 16:55
Willi Wipp Excel zellen in Access Tabelle kopieren mit einem VBA code
Keine neuen Beiträge Access Tabellen & Abfragen: INSERT INTO Code für neue DB 5 Lohse87 614 05. Feb 2007, 14:14
Willi Wipp INSERT INTO Code für neue DB
Keine neuen Beiträge Access Tabellen & Abfragen: DateDiff in VBA Code berechnet liefert Nonsens 8 Utali 1324 15. Jan 2007, 17:08
Gast DateDiff in VBA Code berechnet liefert Nonsens
Keine neuen Beiträge Access Formulare: VBA Code Datum zwischen heute und überüberübermorgen 7 Guybrush junior 6089 04. Jan 2007, 18:08
Willi Wipp VBA Code Datum zwischen heute und überüberübermorgen
Keine neuen Beiträge Access Tabellen & Abfragen: ACCESS Splash - INSERT INTO Abfrage Code 0 Joppel 698 21. Dez 2006, 21:38
Joppel ACCESS Splash - INSERT INTO Abfrage Code
Keine neuen Beiträge Access Formulare: Registersteuerelement + Code MouseMove 0 Borschtel 588 29. Sep 2006, 11:12
Borschtel Registersteuerelement + Code MouseMove
Keine neuen Beiträge Access Formulare: CODE für [Forms]![zurzeit offenes Formular]![ID] 2 Mar307 806 23. Mai 2006, 10:27
Mar307 CODE für [Forms]![zurzeit offenes Formular]![ID]
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Word Serienbriefe