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.
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
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 SubDatenherkunft: 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
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 Subund extra Speichern (im Form brauchst Du auch nicht, eher "Schliessen":
Private Sub btnSchliessen_Click()
DoCmd.Close acForm, Me.Name
End Sub
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 KriterienausdruckGruß, Brane
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] & "'"
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.
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.
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
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