von WSO » Mi, 14.05.2014 10:37
			
			
			Guten Morgen acco und Robert,
zunächst nochmal ein herzliches Dankeschön für eure Geduld mit mir.
Nach intensiver Suche habe ich die ursache für das nicht gefundene ".Parent" gefunden:
Makro-a (Aufruf über Formularereignis) macht Datenbankoperationen (Fehlerfrei)
            schliesst das aufrufende Formular,
            ruft Makro-b auf (.Parent wird nicht mehr gefunden)
Wenn ich 
erst Makro-b aufrufe und 
danach das Formular schliesse läuft Makro-b einwandfrei.
Ob diese System,verhalten so sein muss, kann ich nicht beurteilen.
Also viel Wind um Nichts und viele Stunden der Fehlersuche. 
Für alle, die es brauchen können, hier die function zur Aufbereitung und Augabe der msgbox:
Code: Alles auswählen
Function getMessage(ID as integer, Replacement_1 As String, Replacement_2 as String)  
		REM ID=Felernummer, Replacetext-1, Replacetext-2
		DIM oDatasource AS OBJECT
		DIM oConnection AS OBJECT		
		DIM oSql AS OBJECT
		DIM oResultSet AS OBJECT
		
		DIM stSql AS STRING
		DIM stSql1 as string
		DIM stSql2 as string
		
		Dim iTyp as integer
		DIM iJN as integer
		DIM stID as String
		
		DIM iF1 as String
		DIM iF2 As String
		DIM iF3 As String
		
		stID = ID		
	
		oDatasource = thisComponent.Parent.CurrentController
		IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
		oConnection = oDatasource.ActiveConnection()
		
		stSql1 = "SELECT ""err_id"", ""err_txt"", ""err_typ"" FROM ""tError""" 
		stSql2 = "WHERE err_id = " & ID
		stSql = stSql1 + stSql2
		
		oSql = oConnection.createStatement()		
		oResultSet = oSql.executeQuery(stSql)
		If not isNull (oResultSet) then
				WHILE oResultSet.Next
					REM: Meldung aufbereiten und ausgeben    igel_betrag = Replace(igel_betrag, ",", ".")
					If not isEmpty(Replacement_1) then
							iF1 = oResultSet.getString(2)
							iF1 = Replace(iF1, "@1", Replacement_1)
						else 
							iF1 = oResultSet.getString(2)
					end if
					If not isEmpty(Replacement_2) then
							iF1 = Replace(iF1, "@2", Replacement_2)
					end if 
					iTyp = oResultset.getint(3)
					iF2 = iTyp
					iTyp = oResultset.getint(3)				
					getMessage = True
					SELECT case iTyp   ' es koennen nur 16, 36 oder 64 vorkommen
						case 16:
							iF3 = "Fehlermeldung" + " Nr.: " + stID
							iJN = msgbox(iF1,iF2,iF3)
							if iJN = 0 then					
								getMessage = False
							end if	 
						case 36:
							iF3 = "Bestätigungsabfrage" + " Nr.: " + stID 
							msgbox(iF1,iF2,iF3)
						case 64:
							iF3 = "Hinweis" + " Nr.: " + stID
							msgbox(iF1,iF2,iF3)		
					END SELECT   
            	WEND
       	 	ELSE
       	 		iF1 = "Die Meldung mit Nummer " + stID + "wurde nicht gefunden, die Verarbeitung wird abgebrochen"
       	 		iF2 = 16
       	 		iF3 = "Systemfehler im Modul getMessage" 
        		msgbox iF1,iF2,iF3
        		getMessage = False
        END IF
End Function
Hier ist noch ein offener Punkt, den ich nicht lösen konnte.
Der Text der Meldungen kommt aus einer Tablle (tError). 
Wie kann ich dort ein CHR(13) wirksam werden machen, oder (nur so kann ich es mir vorstellen) das entsprechede ASCII als Zeichen in den Text bringen?
Gruss,
Wolfram
 
			
			
							Guten Morgen acco und Robert,
zunächst nochmal ein herzliches Dankeschön für eure Geduld mit mir.
Nach intensiver Suche habe ich die ursache für das nicht gefundene ".Parent" gefunden:
Makro-a (Aufruf über Formularereignis) macht Datenbankoperationen (Fehlerfrei)
            schliesst das aufrufende Formular,
            ruft Makro-b auf (.Parent wird nicht mehr gefunden)
Wenn ich [color=#0000FF]erst[/color] Makro-b aufrufe und [color=#0000BF]danach das Formular schliesse[/color] läuft Makro-b einwandfrei.
Ob diese System,verhalten so sein muss, kann ich nicht beurteilen.
Also viel Wind um Nichts und viele Stunden der Fehlersuche. 
Für alle, die es brauchen können, hier die function zur Aufbereitung und Augabe der msgbox:
[code]Function getMessage(ID as integer, Replacement_1 As String, Replacement_2 as String)  
		REM ID=Felernummer, Replacetext-1, Replacetext-2
		DIM oDatasource AS OBJECT
		DIM oConnection AS OBJECT		
		DIM oSql AS OBJECT
		DIM oResultSet AS OBJECT
		
		DIM stSql AS STRING
		DIM stSql1 as string
		DIM stSql2 as string
		
		Dim iTyp as integer
		DIM iJN as integer
		DIM stID as String
		
		DIM iF1 as String
		DIM iF2 As String
		DIM iF3 As String
		
		stID = ID		
	
		oDatasource = thisComponent.Parent.CurrentController
		IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
		oConnection = oDatasource.ActiveConnection()
		
		stSql1 = "SELECT ""err_id"", ""err_txt"", ""err_typ"" FROM ""tError""" 
		stSql2 = "WHERE err_id = " & ID
		stSql = stSql1 + stSql2
		
		oSql = oConnection.createStatement()		
		oResultSet = oSql.executeQuery(stSql)
		If not isNull (oResultSet) then
				WHILE oResultSet.Next
					REM: Meldung aufbereiten und ausgeben    igel_betrag = Replace(igel_betrag, ",", ".")
					If not isEmpty(Replacement_1) then
							iF1 = oResultSet.getString(2)
							iF1 = Replace(iF1, "@1", Replacement_1)
						else 
							iF1 = oResultSet.getString(2)
					end if
					If not isEmpty(Replacement_2) then
							iF1 = Replace(iF1, "@2", Replacement_2)
					end if 
					iTyp = oResultset.getint(3)
					iF2 = iTyp
					iTyp = oResultset.getint(3)				
					getMessage = True
					SELECT case iTyp   ' es koennen nur 16, 36 oder 64 vorkommen
						case 16:
							iF3 = "Fehlermeldung" + " Nr.: " + stID
							iJN = msgbox(iF1,iF2,iF3)
							if iJN = 0 then					
								getMessage = False
							end if	 
						case 36:
							iF3 = "Bestätigungsabfrage" + " Nr.: " + stID 
							msgbox(iF1,iF2,iF3)
						case 64:
							iF3 = "Hinweis" + " Nr.: " + stID
							msgbox(iF1,iF2,iF3)		
					END SELECT   
            	WEND
       	 	ELSE
       	 		iF1 = "Die Meldung mit Nummer " + stID + "wurde nicht gefunden, die Verarbeitung wird abgebrochen"
       	 		iF2 = 16
       	 		iF3 = "Systemfehler im Modul getMessage" 
        		msgbox iF1,iF2,iF3
        		getMessage = False
        END IF
End Function
[/code]
Hier ist noch ein offener Punkt, den ich nicht lösen konnte.
Der Text der Meldungen kommt aus einer Tablle (tError). 
Wie kann ich dort ein CHR(13) wirksam werden machen, oder (nur so kann ich es mir vorstellen) das entsprechede ASCII als Zeichen in den Text bringen?
Gruss,
Wolfram