Hallo,
wenn ich Inhalte (mit Zeilenumbruch) eines gebundenen Textfeldes (Datentyp Memo) mit dem Befehl "Me!XX = Null" lösche, und einen weiteren Textbaustein einfüge, wird dieser stets in die 2. Zeile gesetzt.
Die erste Zeile bleibt frei.
Habt Ihr eine Lösung bzw. einen Tip, wie ich erreichen kann, dass nach einem Löschvorgang der nächste Text wieder in der ersten Zeile steht, denn der manuelle Eingriff ist auf Dauer lästig.
Zu meiner Prozedur:
Im Bearbeitungsablauf des frm_A generiere ich Bemerkungen mit Zeilenumbruch. Diese werden in das ungebundene Textfeld (AtxtBtxtCtxt) des frm_Textbausteine geschrieben. Dort werden sie bei Bedarf durch weitere Textbausteine ergänzt.
Bsp.:
If IsNull(Me!AtxtBtxtCtxt) Then
Me!AtxtBtxtCtxt = Me!Materialmuster
Else
Me!AtxtBtxtCtxt = [AtxtBtxtCtxt] & vbCrLf & [Materialmuster]
End If
Bei Verlassen des frm_Textbausteine werden die Inhalte (AtxtBtxtCtxt) in das gebundene Textfeld (Memo) in frm_A zurück geschrieben.
Hallo,
ich glaube nicht, dass das Feld ME!XX der Auslöser für dein Problem ist. Null ist halt wirklich leer.
Wie sieht dein Feld AtxtBtxtCtxt inhaltlich wirklich aus.
Setze doch mal Haltepunkte in den Code und lass dir die Inhalte anzeigen.
Gruß
Johann
Hallo,
zeige mal den gesamten daran beteiligten Code.....
Hallo,
hier die Codes (gesamter Ablauf); hoffentlich blickt Ihr durch.
'[frm_ERSTBESTELLUNG] Textbausteine werden bei Verlassen von gebundenen Textfeldern generiert.
If Not IsNull(Me!AngebBemerkung) Then 'gebundenes Textfeld (Format Memo) Quelle: tblBEARBDAT
Me!AngebBemerkung = [AngebBemerkung] & vbCrLf & "Wegen der Überarbeitung Ihrer Druckvorlage fallen Grafikkosten an; diese betragen " & FormatCurrency(CDbl(Me![KoGrafik])) & "."
Else
Me!AngebBemerkung = "Wegen der Überarbeitung Ihrer Druckvorlage fallen Grafikkosten an; diese betragen " & FormatCurrency(CDbl(Me![KoGrafik])) & "."
End If
If Not IsNull(Me!AngebBemerkung) Then
Me!AngebBemerkung = [AngebBemerkung] & vbCrLf & "Es fallen anteilige Werkzeugkosten (" & [kWerkzeug] & ") an; diese betragen " & FormatCurrency(CDbl(Me![WzKost])) & "."
Else
Me!AngebBemerkung = "Es fallen anteilige Werkzeugkosten (" & [kWerkzeug] & ") an; diese betragen " & FormatCurrency(CDbl(Me![WzKost])) & "."
End If
'Bei Wechsel zu [frm_Textbausteine]
Forms!frm_TextbausteineERST.Form!AtxtBtxtCtxt = Forms!frm_ERSTBESTELLUNG!AngebBemerkung
'[frm_Textbausteine] Textbausteine werden einer Tabelle entnommen und mit Click hinzugefügt
If IsNull(Me!AtxtBtxtCtxt) Then ' ungebundenes Textfeld
Me!AtxtBtxtCtxt = Me!GrafikEignung
Else
Me!AtxtBtxtCtxt = [AtxtBtxtCtxt] & vbCrLf & [GrafikEignung]
End If
If IsNull(Me!AtxtBtxtCtxt) Then
Me!AtxtBtxtCtxt = Me!Materialmuster
Else
Me!AtxtBtxtCtxt = [AtxtBtxtCtxt] & vbCrLf & [Materialmuster]
End If
'Bei "Rück-"Wechsel zu [frm_Erstbestellung]
Forms!frm_ERSTBESTELLUNG!AngebBemerkung = Me!AtxtBtxtCtxt
'bis hierher ist alles ok, die Darstellung in Forms und Reports ist so wie gewollt.
'Das Löschen erfolgt im [frm_Überarbeitung]. Quelle für das Feld [AngebBemerkung] ist die tblBEARBDAT. Dieses Form enthält die selbe Prozedur wie [frm_Erstbestellung].
Private Sub aAuflC_Exit(Cancel As Integer)
On Error Resume Next
Dim cKriterien As String
Dim sMldg As String
Dim sTitel As String
Dim iRes As Integer
Dim erg As Integer
sTitel = "Eingabeprüfung Auflagen"
sMldg = "Bestellte Auflage: " & Format(Me!BESTELLTEAUFLAGE, "0,000") & "" & vbCrLf & "" & vbCrLf & "Alternative Auflage 1: " & Format(Me!aAuflA, "0,000") & ""
iRes = MsgBox(sMldg, vbYesNo + vbQuestion + vbDefaultButton1, sTitel)
erg = iRes
If erg = vbNo Then
Me!BESTELLTEAUFLAGE.SetFocus
Exit Sub
Else
If IsNull(Me!aAuflA) Then
If Not (Me!cFarbe1) Like "*Standard*" Then
sTitel = "Verkürztes Verfahren"
sMldg = "" & vbCrLf & "Kann die weitere Aufmachung unverändert" & vbCrLf & "übernommen werden?" & vbCrLf & "
iRes = MsgBox(sMldg, vbYesNo + vbQuestion + vbDefaultButton1, sTitel)
erg = iRes
If erg = vbYes Then
Me!HilfTextbau = "Ja" ' Unterdrückt setzen von Standardtexten, vermeiden von Doppel
Me!A_Aufl = Me!BESTELLTEAUFLAGE
Me!FarbMischA = Me!cFarbe1.Column(1)
Me!FarbMischB = Me!cFarbe2.Column(1)
Me!SoKosten.Enabled = True
Me!SoKosten.SetFocus
Else
Me!AngebBemerkung = Null 'hierdurch wird das Feld zwar komplett gelöscht, aber ein nachfolgender Textbaustein wird in die 2. Zeile gesetzt.
Me!AuftrBemerkung = Null
Me!ZahlText = 0
Me!DruFarb.Enabled = True
Me!DruFarb.SetFocus
End If
End If
End If
End Sub
Hallo,
ich kann jetzt nur vermuten, dass IsNull nicht greift. Schreib mal so:
If nz(Me!AtxtBtxtCtxt,"") ="" Then ' ungebundenes Textfeld
Me!AtxtBtxtCtxt = Me!GrafikEignung
Else
Me!AtxtBtxtCtxt = Me![AtxtBtxtCtxt] & vbCrLf & Me![GrafikEignung] ' ME nicht vergessen!
End If
If nz(Me!AtxtBtxtCtxt,"") = "" Then
Me!AtxtBtxtCtxt = Me!Materialmuster
Else
Me!AtxtBtxtCtxt = Me![AtxtBtxtCtxt] & vbCrLf & Me![Materialmuster] ' ME nicht vergessen!
End If
Hallo Franz,
es hat alles etwas gedauert, weil es auf Anhieb auch mit nz nicht klappte. Ich musste zunächst mal den Fehler neu eingrenzen und mir jede Codezeile in meinen Formularen noch einmal ansehen, vor allem weil Du mit Deinen Hilfen bisher immer richtig gelegen hast und ich davon ausgehen musste, dass es meinerseits noch Unsauberkeiten gab.
Danach griff auch nz und die Leerzeile verschwand.
Übrigens trat das Problem bis dahin nur im frm_Überarbeitung auf.
- Beim Öffnen wurden die Textbausteine korrekt (ohne Leerzeile) angezeigt.
- Der Text im gebundenen Textfeld [AngebBemerkung] wurde mit: Me!AngebBemerkung = Null gelöscht.
- Beim generieren eines neuen Textbausteines wurde dieser dann in die zweite Zeile des Textfeldes geschrieben.
Aber das ist nun durch Deine Hilfe Vergangenheit.
Also herzlichen Dank.