Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Mickman1Junior am Juli 17, 2014, 07:39:29

Titel: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: Mickman1Junior am Juli 17, 2014, 07:39:29
Guten morgen Leute,
Ich hab folgendes Problem: Ich habe  2 Tabellen, Einmal "tblProdukt" und einmal "tblAuftrag". Diese enthalten folgende Felder:

tblProdukt = Artikelnr, Artikel(Name), Preis, Artikelart(DVD, CD, usw.)
tblAuftrag = Auftragsnr, Artikel(Name), Vorname, Nachname


Nun habe ich ein Formular entworfen, dass mich über ein Kombinationsfeld den Artikel(tblArtikel) auswählen lässt. Über dem Kombinationsfeld steht ein gesperrtes Textfeld (Auftragsnr.). Das Kombinationsfeld ist bereits mit dem Feld Artikel(tblArtikel) verknüpft.

Ich möchte nun das wenn ich ein Artikel ausgewählt habe, er mir automatisch eine Auftragsnr., im Textfeld "Auftragsnr."; zuteilt. Sprich, er soll gleich nach auswahl des Artikels, den Artikel in die tblAuftrag speichern.

Primärschlüssel sind "Auftragsnr." und "Artikelnr."
beide haben AutoWert drinne.


Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: Hondo am Juli 17, 2014, 08:13:23
Hallo,
verwende dazu das Ereignis "Nach Aktualisierung" des Kombinationsfeldes. Als Code folgendes Beispiel:

Dim DB AS DAO.Database
Dim RS AS DAO.Recordset
Set DB = CurrentDB
Set RS = DB.openRecordset("tblAuftrag", dbopenDynaset)

RS.AddNew
RS!Menge = 0
Me.Auftragsnr = RS.Auftragsnr
RS.Update

RS.close
set RS = nothing
set DB = nothing


Bitte keine Sonderzeichen oder sonstiges in die Ausdrücke einfügen. der Punkt aus Auftragsnr muss verschwinden.
Es wird ein neuer Datensatz eingefügt, und z.B. die Auftragsmenge auf 0 gesetzt.

ABER!
After Update feuert auch beim Scrollen per Tastatur, so werden sinnlos viele Datensätze angelegt, Primärschlüssel vergeben, und es ist eine sch... Arbeit die ganzen überzähligen Datensätze wieder zu löschen.
Besser wäre neben dem Kombi ein kleiner Button "OK" der das erledigt.

Imo sollte eine Auftragsnummer eine sprechende Nummer sein, und kein Autowert - aber das ist eine andere Sache.

Gruß Andreas
Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: MzKlMu am Juli 17, 2014, 09:39:31
Hallo,
das Datenmodell schein mir noch völlig unausgereift.
Warum gibt es keine Tabelle für die Personen?
In der Tabelle "tblAuftrag" muss die Artikelnr gespeichert werden und nicht der Artikelname.
Der Preis unterliegt ja Änderungen und muss daher in einer Tabelle (in welcher hängt von der Antwort auf die Fragen ab) redundant gespeichert werden.
Kann ein Auftrag nur eine Artikel umfassen, oder können in einem Auftrag auch mehrere Artikel bestellt werden?

Bitte erkläre das alles mal etwas ausführlicher.

@Andreas
Das Ereignis wird doch nicht beim Scrollen ausgelöst, es kommt nur nach Aktualisierung des Kombis. Kann es sein, dass Du das mit "Beim Anzeigen" verwechselst?
Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: Mickman1Junior am Juli 17, 2014, 10:37:35
Schonmal danke für die schnellen Antworten. Die DB ist nur eine Lernaufgabe vom Lehrmeister und wird nicht privat o. geschäftlich genutzt. Eine reine Übung.

Eine Tabelle für Personen besteht (tblBenutzername).
Diese enthält aber nur Vor- und Nachname, eine reine übung halt.

In die tblAuftrag hab ich nun das Feld Artikelnr, mit dem Typ "Zahl" hinzugefügt. Den Artikelnamen hab ich mit in den Auftrag gepackt um im nachhinein vielleicht den Bericht besser zu organisieren/verfassen um darraus evtl eine Rechnung zu machen. Kann man das überhaupt so machen oder ist es eher schwierig?

Wäre schön wenn der Auftrag mehrere Artikel umfassen könnte.


PS:
beim kompilieren tritt ein fehler auf
Methode o. Datenobjekt nicht gefunden

Dim DB AS DAO.Database
Dim RS AS DAO.Recordset
Set DB = CurrentDB
Set RS = DB.openRecordset("tblAuftrag", dbopenDynaset)

RS.AddNew
RS!Menge = 0
Me.Auftragsnr = [color=yellow]RS.Auftragsnr[/color]
RS.Update

RS.close
set RS = nothing
set DB = nothing


[/quote]
 

Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: MzKlMu am Juli 17, 2014, 10:53:13
Hallo,
das Datenmodell ist falsch.
Du benötigst folgende Tabellen:

- Artikel (Artikelnr (PS), Artikelname, ArtikelArtID_F(FS), Preis
- ArtikelArt (ArtikelArtID (PS), Artikelname
- Benutzer (BenutzerID (PS), Nachname, Vorname)
- Auftrag (AuftragNr (AW,PS), BenutzerID_F(FS), Auftragsdatum, Auftragsnummer)
- AuftragArtikel (AuftragArtikelID(PS), AuftragNr_F(FS), Menge, Preis)

AW=Autowert
PS=Primärschlüssel
FS=Fremdschlüssel

Code zum automatischen Anlegen der Auftragsnummer ist überflüssig. Sobald im Formular ein Benutzer gewählt wird, wird die Auftragsnummer automatisch erzeugt.
Als Übung reicht das völlig aus.

ZitatDen Artikelnamen hab ich mit in den Auftrag gepackt um im nachhinein vielleicht den Bericht besser zu organisieren/verfassen um darraus evtl eine Rechnung zu machen.
Das wäre auch falsch denn die fehlenden Felder für einen Bericht holt man über eine Abfrage mit allen Tabellen und den Verknüpfungen über die Schlüsselfelder.

Hast Du in Deiner DB überhaupt Beziehungen im Beziehungsfenster angelegt?
Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: Mickman1Junior am Juli 17, 2014, 11:15:30
Also wäre der erste Versuch, eine funktionelle DB zu erstellen, schon mal ein Griff ins Klo gewesen. Denn muss ich wohl nochmal neu anfangen. :)

Bei dem Datenmodell war ich mir eh noch nicht so sicher.
Ich werd mal gleich die Tabelle erstellen. .

Beziehungen hab ich noch keine verwendet, ich hab auch vergessen einige sachen zu erwähnen. Über Beziehungen weiß ich schon einigermaßen bescheid, was die Verhältnisse zu einander angeht. Ansonsten hat das hinzufügen von Beziehungen bei mir meistens zu Fehlern geführt.

Erstellen möchte ich eine DB für ein "normalen" Shop, mit Warenkorb, druckbaren Rechnungen auf knopfdruck, Artikelsuche, Registrier und Einlogg möglichkeiten.


Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: MzKlMu am Juli 17, 2014, 11:28:10
Hallo,
der erste Schritt nach dem Anlegen der Tabellen sind die Beziehungen. Wenn das nicht fehlerfrei geht (mit eingestellter referentieller Integrität) brauchst Du erst gar nicht weiterzumachen. Man kann im Regelfall keine korrekte DB aufbauen ohne angelegte Beziehungen.
Titel: Re: Textfeld, Kombinationsfeld mit Tabellen verknüpfen
Beitrag von: Hondo am Juli 17, 2014, 12:49:22
Zitat von: MzKlMu am Juli 17, 2014, 09:39:31
Das Ereignis wird doch nicht beim Scrollen ausgelöst, es kommt nur nach Aktualisierung des Kombis. Kann es sein, dass Du das mit "Beim Anzeigen" verwechselst?

Nein, falsche Welt. Arbeite kaum noch mit Access, fast nur noch mit VB
Gruß Andreas