Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Eingabe in Access Formular wird nicht gesichert

Begonnen von Brane, März 21, 2020, 19:55:10

⏪ vorheriges - nächstes ⏩

Brane

Hallo zusammen.

Seit Tagen versuche ich mein Problem selber zu lösen, leider mangels Fehlender VBA programmiere Kenntnisse erfolglos. Leider habe ich hier in Forum keine Lösung für mein Problem gefunden. Ich bin überzeugt, für die Profis von euch eine Kleinigkeit.

In meine Tabelle ,,Ersatzteile" soll für jeden aufgerufenen Ersatzteil nachträglich zu dem Teil passendes Foto hinzugefügt werden durch Angabe des Bildpfades im Feld ,,Bildpfad".
Aus dem Hauptformular wird per Befehlsschaltfläche PopUp Formular geöffnet. Nach Eingabe des Bildpfads in Textfeld wird wiederum per Schaltfläche der PopUp Formular geschlossen und der Eingegebene Pfad gesichert.

Mein Problem: die Zuordnung Ersatzteil Nr. (MB_NR) und Dazugehörige Feld ,,Bildpfad" funktioniert, nur der Angegebene Pfad wird im Tabellenfeld nicht gesichert.

Private Sub Bildhinzufügen_Click()
On Error GoTo Err_Bildhinzufügen_Click
    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "FrmBildpfad"
    stLinkCriteria = "[MB_NR]=" & Me![MB_NR] & "*"
    DoCmd.OpenForm stDocName
    Forms![FrmBildpfad]![Bildpfad] = Me![Bildpfad]
                   
Exit_Bildhinzufügen_Click:
    Exit Sub
Err_Bildhinzufügen_Click:
    MsgBox Err.Description
    Resume Exit_Bildhinzufügen_Click

End Sub


Was fehlt mir, oder ist falsch?
Für euere Hilfe schon mal Danke im Voraus.


DF6GL

Hallo,


Zitatper Schaltfläche der PopUp Formular geschlossen und der Eingegebene Pfad gesichert.

Mein Problem: die Zuordnung Ersatzteil Nr. (MB_NR) und Dazugehörige Feld ,,Bildpfad" funktioniert, nur der Angegebene Pfad wird im Tabellenfeld nicht gesichert.

was nun? wird gesichert oder nicht?


Was steht in "[Bildpfad]" ?  Nur der Pfad als solches oder der komplette Pfad mit Dateiname?

Zeige auch den Code, der das Popup-Form und den PfadDateinamen sichern soll, sowie die Datenherkunft dieses Popup-Forms.


Der Stern ist fehl am Platz:
Zitat.
.
stDocName = "FrmBildpfad"
    stLinkCriteria = "[MB_NR]=" & Me![MB_NR] & "*"

.
.


Wozu brauchst Du überhaupt ein weiteres Popup-Formular?

Setz das Textfeld für den (kompletten) PfadDateinamen in das Hauptform und aktualisiere die Tabelle:

Private Sub Bildhinzufügen_Click()
On Error GoTo Err_Bildhinzufügen_Click
   
Currentdb.Execute "Update Ersatzteile Set BildPfad = '" & Me!Bildpfad &  "' Where MB_NR = " &  Me!MB_NR   
Me.Requery   
       
Exit_Bildhinzufügen_Click:
    Exit Sub
Err_Bildhinzufügen_Click:
    MsgBox Err.Description
    Resume Exit_Bildhinzufügen_Click

End Sub

Brane

Vielen Dank für deine schnelle Antwort, Franz.

Zitatwas nun? wird gesichert oder nicht?
Das ist ja mein Problem, es wird nicht gesichert!

ZitatWas steht in "[Bildpfad]" ?  Nur der Pfad als solches oder der komplette Pfad mit Dateiname?
Kompletter Pfad mit Dateiname: C:\SERVICEDATEN\Datenbank\Pictures\00000619.jpg

ZitatZeige auch den Code, der das Popup-Form und den PfadDateinamen sichern soll, sowie die Datenherkunft dieses Popup-Forms.

Private Sub Speichern_Click()
On Error GoTo Err_Speichern_Click

DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close

Exit_Speichern_Click:
Exit Sub

Err_Speichern_Click:
MsgBox Err.Description
Resume Exit_Speichern_Click

End Sub

Datenherkunft: Tabelle Ersatzteile

ZitatWozu brauchst Du überhaupt ein weiteres Popup-Formular?

Setz das Textfeld für den (kompletten) PfadDateinamen in das Hauptform...
Ich hab das auch zuerst gemacht und nutze es jetzt als Kontrolle (den Textfeld mit Tab Feld gebunden).
Ich möchte aber den Textfeld nicht sichtbar haben, deswegen wäre mir PopUp-Formular lieber.

Gruß, Brane

DF6GL

#3
Hallo,

ZitatIch möchte aber den Textfeld nicht sichtbar haben, deswegen wäre mir PopUp-Formular lieber.

D. h., das Feld "BildPfad" steht nicht im aufrufenden Form, sondern im Form "FrmBildpfad"?


Dann braucht doch nur das Form "FrmBildpfad" lediglich modal und gefiltert aufgerufen und dort der DateiPfad eingetragen werden.  Voraussetzung ist noch, dass das Textfeld an das Tabellenfeld gebunden ist.:


Private Sub Bildhinzufügen_Click()
On Error GoTo Err_Bildhinzufügen_Click

DoCmd.OpenForm "frmBildpfad", , ,"[MB_NR]=" & Me![MB_NR] , ,acDialog
                   
Exit_Bildhinzufügen_Click:
    Exit Sub
Err_Bildhinzufügen_Click:
    MsgBox Err.Description
    Resume Exit_Bildhinzufügen_Click

End Sub


und extra Speichern (im Form brauchst Du auch nicht, eher "Schliessen":

Private Sub btnSchliessen_Click()

DoCmd.Close acForm, Me.Name

End Sub

Brane

Hallo.

ZitatD. h., das Feld "BildPfad" steht nicht im aufrufenden Form, sondern im Form "FrmBildpfad"?
Falls Du damit das Textfeld meinst, dann ja.

Ich habe es mit deinem Code probiert, nun bekomme ich Access Meldung: Datentypenkonflikt in Kriterienausdruck

Gruß, Brane

DF6GL

Hallo,

welchen Code meinst Du?

Falls ,"MB_NR"   den Datentyp TEXT in der Tabelle besitzt, dann muss es so lauten:

DoCmd.OpenForm "frmBildpfad", , ,"[MB_NR]='" & Me![MB_NR] & "'"

Brane

Vielen Dank, Franz! Das ist es, funktioniert! Super!  :)
So habe ich mir das vorgestellt.  :D

Aber, eine Kleinigkeit hätte ich noch.
Ist in der Tabelle ein Eintrag, in meinem Fall Bildpfad vorhanden, dann wird er auch nach dem Öffnen des PopUp Formulars frmBildpfad in Textfeld angezeigt. Nun kann der Wert geändert und/oder übernommen werden. Soweit OK.
Ist aber noch kein Eintrag in Feld vorhanden, erscheint logischerweise leeres Textfeld. Hier wäre von Vorteil, wenn ein Teil meines Pfades bereits vorgegeben wurde (C:\SERVICEDATEN\Datenbank\Pictures\). So bräuchte man nicht den gesamten Pfad eingeben.

Ich habe in frmBildpfad beim Textfeld unter Daten > Standardwert den oberen Pfad eingetragen, dieser wird aber nicht übernommen!
Wieso eigentlich nicht? Kann man das anderweitig lösen?

Schöne Grüße und schon mal Danke im Voraus.

MzKlMu

Hallo,
der Standardwert greift nur bei einem neuen Datensatz.
Ich würde grundsätzlich nur den Dateinamen eintragen. Der Pfad steht ja im Regelfall fest.
Der Pfad und Dateiname lässt sich dann ganz einfach in einer Abfrage verknüpfen.
Bildpfad: "C:\SERVICEDATEN\Datenbank\Pictures\" & Dateiname
Das Feld das jetzt Bildpfad heißt dann umbenennen in "Dateiname"
Statt der Tabelle nimmst Du jetzt die Abfrage mit dem Feld Bildpfad.

Wenn es ganz flexibel machen will, legt man für den Pfad eine Tabelle an und holt mit DlookUp den aktuellen Pfad aus der Tabelle.
Gruß Klaus

DF6GL

Hallo,


ein Standardwert wirkt sich nur als Vorschlag bei einem neuen Datensatz aus.

Bei einem bestehenden DS, aber leeren Textfeld hat er keine Auswirkung.

Je nachdem, wie der Pfad als solches sich ändern kann, böte sich bei seltener Änderung eine Parametertabelle an, in der der aktuelle Pfad (als Quasi-Konstante)  hinterlegt ist.

Ein weiteres ungebundenes Textfeld ("txtBildDateiname") dient dann als Eingabefeld für den reinen Dateinamen. In dessen Ereignisprozedur "Nach Aktualisierung" erfolgt eine Zuweisung des zusammengesetzten PfadDateinamens an das Feld "BildPfad"

Sub txtBildDateiname_AfterUpdate()
Me!Bildpfad = Dlookup("PWert","tblParameter","PName = 'BildDateiPfad') & "\" & Me!txtDateiname
End Sub


Parametertabelle:

PID (Autowert)
PName (kurzer Text, ohne Duplikate)
PWert (kurzer Text)


mit Eintrag:

PName             PWert
BildDateiPfad   C:\SERVICEDATEN\Datenbank\Pictures




Brane

Vielen Dank, für euere Hilfe! Funktioniert wie gewünscht.  :D

Wie man bei uns in Bayern sagt: Wer ko, der ko!  ;)

Schöne Grüße und bleibt gesund.  :)
Brane