Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
neuen Datensatz anlegen wenn Wert nicht in Kombinationsliste
zurück: access formular mit xls weiter: Pivot im "Formular"? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Limerick
Im Profil kannst Du frei den Rang ändern


Verfasst am:
31. Aug 2009, 19:08
Rufname:

neuen Datensatz anlegen wenn Wert nicht in Kombinationsliste - neuen Datensatz anlegen wenn Wert nicht in Kombinationsliste

Nach oben
       Version: Office 2007

Moin zusammen,

nachdem ich hier schon viel im Forum gelesen habe und auch Hilfen gefunden habe, stecke ich doch als Anfänger bei meiner Datenbank ein wenig fest.

Und zwar möchte ich ein Formular erstellen um Kontaktdaten einzugeben. Das funktioniert auch soweit. Nun mein Problem.
Über ein Kombinationsfeld möchte ich eine entsprechende Firma auswählen, zu der der Mitarbeiter gehört. Diese Daten befinden sich in einer zweiten Tabelle.
Es soll jedoch auch möglich sein eine neue Firma anzulegen, wenn sie sich nicht in der Auswahlliste des Kombinationsfeldes befindet.
--> das Anlegen eines neuen Datensatzes will aber partout nicht gelingen :-/

Über Vorschläge wäre ich sehr dankbar!!
(Verwende Access 2007)

Viele Grüße,
Limerick
MissPh!
Office-VBA-Programmiererin


Verfasst am:
31. Aug 2009, 20:10
Rufname:
Wohnort: NRW


Re: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - Re: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Hallo,
Limerick - 31. Aug 2009, 19:08 hat folgendes geschrieben:
--> das Anlegen eines neuen Datensatzes will aber partout nicht gelingen :-/
vielleicht zeigst du mal, was du schon versucht hast, damit wir einen Ansatzpunkt bekommen.

Hast du die Access-Hilfe gelesen und die Beispiele angeschaut zum Ereignis NotInList des Kombinationsfeldes?

_________________
Gruß MissPh!
Gast



Verfasst am:
31. Aug 2009, 22:08
Rufname:

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Aus dem Hilfeeintrag von Access bin ich leider nicht so recht schlau geworden.

Ich hab es mit folgenden Codes probiert, die ich im Forum bzw. über Google gefunden hatte. Leider scheinen sie in meinem Fall nicht zu funktionieren, da ich Fehlermeldungen bekomme.
Code:
Private Sub Kombinationsfeld32_NotInList(NewData As String, Response As Integer)
    DoCmd.GoToRecord , , acNewRec
End Sub
und
Code:
Private Sub Kombinationsfeld32_NotInList(NewData As String, Response As Integer)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
   
    Response = acDataErrAdded
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Tabellenname", dbOpenDynaset)
    rs.AddNew
    rs!Feldname = NewData
    rs.Update
    rs.Close: Set rs = Nothing
    Set db = Nothing
End Sub
Da ich die Befehle nicht kenne ist eine Fehlerkorrektur für mich so gut wie unmöglich.
Vielleicht hat wer von Euch einen Tipp?

Limerick
MissPh!
Office-VBA-Programmiererin


Verfasst am:
31. Aug 2009, 22:30
Rufname:
Wohnort: NRW

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Die zweite Prozedur sieht vom Ansatz her doch schon ganz gut aus.
Sag doch bitte mal, welche Fehlermeldungen da gekommen sind.

_________________
Gruß MissPh!
Gast



Verfasst am:
01. Sep 2009, 06:00
Rufname:


AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

So schaut der Code bei mir aus:
Code:
Private Sub Kombinationsfeld32_NotInList(NewData As String, Response As Integer)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
   
    Response = acDataErrAdded
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Organisationen", dbOpenDynaset)
    rs.AddNew
    rs!Organisation = NewData
    rs.Update
    rs.Close: Set rs = Nothing
    Set db = Nothing
End Sub
Allerdings kommt von Access bei Eingeben eines nicht in der Liste vorhandenen Wertes die Fehlermeldung:
Zitat:
Der von Ihnen eingegebene Text ist kein Element der Liste.
Wählen Sie ein Element der Liste aus, oder geben Sie Text ein, der mit eienm der aufgelisteten Elemente übereinstimmt.
Über ein Makro müßte mein Vorhaben ja auch zu realisieren sein, jedoch kenne ich mich dabei genauso wening aus.
Willi Wipp
Moderator


Verfasst am:
01. Sep 2009, 09:49
Rufname:
Wohnort: Raum Wiesbaden

Re: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - Re: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Hi Limerick,

bist Du sicher das die Ereignis-Prozedur auch mit dem Ereignis verbunden ist?
Setze mal einen Haltepunkt (F9) in die Prozedur und schau was passiert.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
MissPh!
Office-VBA-Programmiererin


Verfasst am:
01. Sep 2009, 10:06
Rufname:
Wohnort: NRW

Re: AW: neuen Datensatz anlegen wenn Wert nicht in Kombinati - Re: AW: neuen Datensatz anlegen wenn Wert nicht in Kombinati

Nach oben
       Version: Office 2007

Anonymous - 01. Sep 2009, 06:00 hat folgendes geschrieben:
Über ein Makro müßte mein Vorhaben ja auch zu realisieren sein, jedoch kenne ich mich dabei genauso wening aus.
Nein, das kannst du nur (vernünftig) über die Ereignisprozedur lösen, da du in einem Makro weder an die Eingabe (NewData) kommst noch einen Rückgabewert (Response) setzen kannst.
_________________
Gruß MissPh!
Limerick
Im Profil kannst Du frei den Rang ändern


Verfasst am:
01. Sep 2009, 16:48
Rufname:

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Hatte die andern beiden Male vergessen mich einzuloggen, sorry..

Das mit dem Haltepunkt kannte ich nicht, hoffe ich hab es trotzdem richtig verstanden und angewendet.
Habe mich durch die Zeilen nach unten durchgearbeitet. Immer wenn das Bearbeitungsfenster aufging bin ich davon ausgegangen, dass kein Fehler vorlag, sondern die Prozedur bis zum Haltepunkt ordnungsgemäß durchgelaufen ist. Anschließend hab ich bei der Zeile darunter den Haltepunkt gesetzt.

Erst bei der Zeile:
Code:
    rs.AddNew
kam folgende Fehlermeldung:
Zitat:
Laufzeitfehler '3003':
Transaktion konnte nicht gestartet werden; bereits zu viele verschachtelte Transaktionen vorhanden.
Wobei der Fehler dann wahrscheinlich in der Zeile darüber liegt, oder?
Code:
    Set rs = db.OpenRecordset("Organisationen", dbOpenDynaset)
Die Access-Hilfe bringt mich da auch nicht weiter:
Zitat:
Transaktion konnte nicht gestartet werden; bereits zu viele verschachtelte Transaktionen vorhanden. (Fehler 3003)

Sie haben versucht, eine Transaktion über mehr als fünf Ebenen zu verschachteln. Verwenden Sie die CommitTrans- oder die Rollback-Methode, um die aktuelle Transaktion zu speichern oder zurückzusetzen, bevor Sie eine neue Transaktion starten.
Zum einen weiß ich nicht, welche Ebenen gemeint sind und zum anderen habe ich wissentlich nichts verschachtelt..

Danke auf jeden Fall für Eure Antworten!!

@MissPh!: Danke für den Hinweis, dann brauche ich den Weg mit den Makros nicht weiter verfolgen. Sah für mich auf den ersten Blick auch möglich aus (und auch etwas einfacher zum reindenken.. dachte ich zumindest)
MissPh!
Office-VBA-Programmiererin


Verfasst am:
01. Sep 2009, 17:01
Rufname:
Wohnort: NRW

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Zeig mal den kompletten Code, wahrscheinlich gehst du nicht korrekt mit den Objekten um.
Die müssen nach Gebrauch wieder geschlossen (sofern möglich) und "entwertet" werden.
Beispiel:
Code:
    rs.Close
    Set rs = Nothing
    Set db = Nothing
Sorry, so steht es oben ja schon.
Aber was machst du denn sonst noch in dem Formular?

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


Verfasst am:
04. Sep 2009, 09:09
Rufname:

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Limerick am 01. Sep 2009 um 17:21 hat folgendes geschrieben:
Das habe ich mich auch gefragt..

ich hatte eine Vorlage von Access verwendet, die ich dann angepasst habe.
In dem Formular waren auch schon einige andere Felder, die ich zum Teil meinen Anforderungen entsprechend angepasst habe und unter anderem auch das Kombinationsfeld neu eingefügt hab.

Ich habe jetzt mal ein komplett leeres Formular verwendet, indem ich nur ein Feld für den neuen Nachnamen des Kontaktes, sowie das Kombinationsfeld mit dem oben aufgeführten Code bei NotInList eingefügt habe.

Und siehe da, es funktioniert!!! Very Happy
Warum das in dem anderen Formular nicht klappt weiß ich nicht, aber so werd ich dann erstmal versuchen mir das Formular komplett selber zu erstellen. Denn mit dem Code scheint es ja gut zu gehen.

Falls ich ins stocken kommen sollte, würde ich mich nochmal melden.
Ganz herzlichsten Dank für Eure Hilfe, ohne die hätte ich wahrscheinlich die Flinte schon ins Korn geworfen. Danke!!!

So, soweit klappt alles wunderbar.
Mein Code für das Kombinationsfeld sieht momentan folgendermaßen aus, da ich das andere Formular auch öffnen möchte, um den Datensatz des neu eingebenen Wert zu vervollständigen.
Code:
Private Sub OrganisationID_NotInList(NewData As String, Response As Integer)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
   
    Response = acDataErrAdded
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Organisationen", dbOpenDynaset)
    rs.AddNew
    rs!Organisation = NewData
    rs.Update
    rs.Close: Set rs = Nothing
    Set db = Nothing
    DoCmd.OpenForm "Organisationen"
End Sub
Nun hatte ich noch vor einen Button unter das Kombinationsfeld zu setzen, um auch die Datensätze, die bereits im Kombinationsfeld ausgewählt sind, über ein zweites Formular aufzurufen.
Der Button ist folgendermaßen belegt:
Code:
Private Sub Adresse__Arbeit__Click()
    DoCmd.OpenForm "Organisationen", , , , , , Str(Me!OrganisationID)
End Sub
Das zu öffnende Formular hat beim Öffnen folgenden Code:
Code:
Private Sub Form_Open(Cancel As Integer)
    If IsNull(OpenArgs) Then
        DoCmd.GoToRecord , , acLast
      Else
        Me.Recordset.FindFirst "[OrganisationID] = '" & Me.OpenArgs & "'"
    End If
End Sub
Sieht wahrscheinlich schauerlich aus und funktioniert auch nicht.
Folgende Fehlermeldung kommt beim Klicken:
Zitat:
Laufzeitfehler '3345':
Unbekannter oder ungültiger Feldbezug '[OrganisationID]'
Habt ihr eine Idee? Beim Debuggen wird der Code unter "Else" markiert.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
04. Sep 2009, 11:55
Rufname:
Wohnort: NRW

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Hallo,

im Open kannst du noch nicht auf die Daten zugreifen, verschiebe den Code mal ins Load-Ereignis.

PS: Ist die ID wirklich ein Textfeld? Bei Zahlen müssen die Hochstriche entfernt werden.

_________________
Gruß MissPh!
Marmeladenglas
komme zurecht


Verfasst am:
04. Sep 2009, 12:18
Rufname:

AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Hi,
OrganisationID ist doch sicherlich ein numerischer Autowert ?
Warum übergibst du hier die OpenArgs als Text ?
Code:
......"[OrganisationID] = '" & Me.OpenArgs & "'"

sollte doch eigentlich:
Code:
......."[OrganisationID] = " & Me.OpenArgs
sein!
Noch ne Kleinigkeit:
Fällt dir auf, dass du 3x das gleiche Wort für unterschiedliche Objekte verwendest?
Organisation...
Einmal als Tabellennamen, dann als Formularnamen, als Feldnamen. DAs ist nicht gerade übersichtlich. Da muß man bei diesem "kleinen" Code schon genau schauen, was jetzt gemeint ist.
Einmal ist Organisations_ID der Feldname, zusätzlich aber auch der Name des Kombifeldes.
tblOrganisationen, frmOrganisationen, cmbOrganisation, Organisaiton_ID würde für Klarheit schaffen, nur mal am Rande erwähnt.
Limerick
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Sep 2009, 14:45
Rufname:


AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl - AW: neuen Datensatz anlegen wenn Wert nicht in Kombinationsl

Nach oben
       Version: Office 2007

Danke für Eure Tipps!!

Mit beiden Änderungen klappt es nun! Super lieben Dank!!

Das mit den Bezeichnungen ist in der Tat sehr ungünstig von mir gewählt. Werde bei der nächsten Datenbank für saubere Unterscheidungen sorgen.
Es war nämlich tatsächlich noch ein Bezeichnungsfehler drin. Confused
Da wird die Fehlersuche dann sehr aufwendig.
Nochmals besten Dank für die super schnelle Hilfe!!

Limerick
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: Hintergrundfarbe in Datensatz 1 Rheinbote 900 24. Feb 2005, 20:18
stpimi Hintergrundfarbe in Datensatz
Keine neuen Beiträge Access Tabellen & Abfragen: Grundlegendes zum Anlegen einer speziellen Datenbank 3 Dr.Wackelzahn 682 07. Feb 2005, 15:15
stpimi Grundlegendes zum Anlegen einer speziellen Datenbank
Keine neuen Beiträge Access Tabellen & Abfragen: Wert von Kontrollkästchen für Abfrage verwenden? 1 JoHo 1690 21. Jan 2005, 11:41
JoHo Wert von Kontrollkästchen für Abfrage verwenden?
Keine neuen Beiträge Access Tabellen & Abfragen: Wenn Wert nicht vorhanden nimm den nächsten 2 Ogdo 788 29. Dez 2004, 12:40
Gast Wenn Wert nicht vorhanden nimm den nächsten
Keine neuen Beiträge Access Tabellen & Abfragen: Bei der Aktualisierung eines Tabellenwertes neuen Datensatz 6 zheng 810 07. Dez 2004, 22:35
zheng Bei der Aktualisierung eines Tabellenwertes neuen Datensatz
Keine neuen Beiträge Access Tabellen & Abfragen: Aktionsabfrage in Formular -immer nur einen Datensatz ändern 6 blauvogel 1092 08. Okt 2004, 11:43
Skogafoss Aktionsabfrage in Formular -immer nur einen Datensatz ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Datensatz nach Datum suchen?? 1 Hansen 1390 04. Okt 2004, 12:16
stpimi Datensatz nach Datum suchen??
Keine neuen Beiträge Access Tabellen & Abfragen: SQL - Abfrage ob ein Wert in der Tabelle enthalten ist 1 notausgang 1301 23. Sep 2004, 09:42
stpimi SQL - Abfrage ob ein Wert in der Tabelle enthalten ist
Keine neuen Beiträge Access Tabellen & Abfragen: Einen Wert per Abfrage in mehreren Tabellenspalten suchen 2 Danny G. 606 10. Sep 2004, 18:22
Danny G. Einen Wert per Abfrage in mehreren Tabellenspalten suchen
Keine neuen Beiträge Access Tabellen & Abfragen: bestimmte(n) Datensatz in abfrage ausschließen 2 Lene 3641 02. Sep 2004, 15:39
borstel bestimmte(n) Datensatz in abfrage ausschließen
Keine neuen Beiträge Access Tabellen & Abfragen: Wert aus Kombinationsfeld in Abfrage verwenden 2 buku333 1786 06. Aug 2004, 16:12
buku333 Wert aus Kombinationsfeld in Abfrage verwenden
Keine neuen Beiträge Access Tabellen & Abfragen: nur datensatz mit jüngstem datum ausgeben 2 Mordred 2199 16. Jul 2004, 17:10
Mordred nur datensatz mit jüngstem datum ausgeben
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln