Hallo Zusammen,
ich habe einen vielzahl von Textvorlagen /Textbausteine, in denen es bestimmte Platzhalter (siehe Beispiel) gibt!
Dies sollen nun aus dem Text ausgelesen werden ( $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}') und auf einer zusätzlichen GUI als Input oder Listbox dynamisch erstellt werden ... und nach ausfüllen dieser, dann wieder in den Text schreiben ...
wer kann mir einen denkanstoss geben, komme grad nicht weiter?
Textbeispiel: {var:Kundennachname}
Spoiler anzeigen
{list:Anrede:Frau=Sehr geehrte Frau#Herr=Sehr geehrter Herr} {var:Kundennachname},
vielen Dank für Ihre Email.
Bitte fügen Sie uns immer die vorangegangene eMail-Korrespondenz ein, nur so
können wir eine schnelle Bearbeitung Ihrer eMail gewährleisten.
Vielen Dank für Ihre Unterstützung.
Gern beantworten wir Ihnen weitere Fragen auch telefonisch.
Sie erreichen uns täglich von 08.00 - 24.00 Uhr.
Freundliche Grüße
hier das script
Spoiler anzeigen
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Constants.au3>
#include <File.au3>
#Include <GuiButton.au3>
#Include <GuiComboBox.au3>
#include <GuiEdit.au3>
#include <String.au3>
#include <GUIListBox.au3>
#include <GuiConstantsEx.au3>
#include <Array.au3>
Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
Local $aArray_var, $aArray_list
#Region DB_Variablen
;=========Datenbank=Variablen========
$dbname = "D:\TB.mdb"
;====================================
$tblname_1 = "TB_Baustein"
$fldname_tbl1_1 = "Name"
$format = "Text(50)"
$fldname_tbl1_2 = "Kategorie"
$format = "Text(50)"
$fldname_tbl1_3 = "TB_Text"
$format = "Memo"
;====================================
$tblname_2 = "TB_Kategorie"
$fldname_tbl2_1 = "ID"
$format = "Text(50)"
$fldname_tbl2_2 = "Kategorie"
$format = "Text(50)"
;====================================
#EndRegion DB_Variablen
_GUI()
[/autoit] [autoit][/autoit] [autoit]Func _GUI()
[/autoit] [autoit][/autoit] [autoit]$gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
$lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
;--------------
$cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
$query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
$strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
;----------------
;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
$lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
$List1 = GUICtrlCreateList("", 80, 80, 390, 214)
$query_name = "SELECT Name FROM " & $tblname_1
$strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
GUICtrlSetData($List1, $strData_Name)
$Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
GUISetState(@SW_SHOW)
While 1
;$windowtext = _WinAPI_GetWindowText($hWnd)
;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then
;GUIDelete($gui_tb)
Exit;Loop
EndIf
Switch $msg
Case $cmb
_GUICtrlListBox_ResetContent($List1)
$wert_cmb = GUICtrlRead($cmb)
;----db lesen---
$query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
$strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
$strData_id = StringStripWS($strData_id,8)
;---------------
; alle einträge der kategorie mit ensprechender id auflisten
IF $strData_id = "1" Then
$query_name = "SELECT Name FROM " & $tblname_1
Else
$query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
EndIf
;$query_name = "SELECT Name FROM TB_Baustein WHERE TB_Baustein.Kategorie = '" & $strData_id &"'"
$strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
;MsgBox(0,$strData_id ,$strData_Name)
GUICtrlSetData($List1, $strData_Name)
Case $List1
[/autoit] [autoit][/autoit] [autoit]$strData_TB_Text = ""
$wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
;MsgBox(0,"1",$wert_list1)
;---------------
$query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
;ConsoleWrite ($query_name_TB_Text & @CRLF)
$strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)
;MsgBox(0,"2" ,$strData_TB_Text)
;GUICtrlSetData($Edit2, $strData_TB_Text)
$aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
_ArrayDisplay($aArray_var, 'var')
MsgBox(0,"",@error)
If @error <> 1 Then _GUI_Var_List()
$aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
;_ArrayDisplay($aArray_list, 'Default Search')
;$before = "fexp=1234,5678&algorithm"
;$replace_with = "907605"
;$after = StringReplace(StringRegExpReplace($before, "(fexp=)(.*)(&algorithm)", "$1 " & $replace_with & "$3"), "= ", "=")
;$after = StringRegExpReplace($before, "(fexp=)(.*)(&algorithm)", "${1}" & $replace_with & "$3")
;MsgBox(0, "Test", $after)
_GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
;----
;ClipPut($wert1)
EndSwitch
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _GUI_Var_List()
[/autoit] [autoit][/autoit] [autoit]_ArrayDisplay($aArray_var, 'Default Search')
$gui_var = GUICreate("TEST", 400, 300, -1, -1)
;GUICtrlSetData($Labels[$aArray_var])
GUISetState(@SW_SHOW)
;Dim $Labels[$objItem]
Dim $objItem, $Labels, $i, $l, $n
If IsObj($aArray_var) Then
MsgBox(0,"","test1")
For $objItem In $aArray_var
MsgBox(0,"",$objItem)
;$aLabels[$i][0] = $objItem.Name
;$aLabels[$i][1] = $objItem.VolumeName
;GUICtrlCreateLabel($aLabels[$i][0] & " -> " & $aLabels[$i][1], 50, $l)
$i += 1
$l += 25
Next
EndIf
;ReDim $aLabels[$i][2]
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then
GUIDelete($gui_var)
ExitLoop
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]#Region Textdatei
#CS
Func _File_01()
$DATAC2 = ""
$sString = ""
$file = (@ScriptDir & "\TB.txt")
If Not _FileReadToArray($file,$aRecords) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
For $x = 1 to $aRecords[0]
;Msgbox(0,'Record:' & $x, $aRecords[$x])
$sString &= $aRecords[$x]
Next
;MsgBox(0,"", $sString)
$DATAC2 = $sString
EndFunc
#CE
#EndRegion Textdatei
;------access DB auslesen -------------
Func _ReadOneFld($_sql, $_dbname, $_field)
Dim $_output
$adoCon = ObjCreate("ADODB.Connection")
$adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
$adoRs = ObjCreate("ADODB.Recordset")
$adoRs.CursorType = 1
$adoRs.LockType = 3
$adoRs.Open($_sql, $adoCon)
With $adoRs
If .RecordCount Then
While Not .EOF
$_output = $_output & .Fields($_field).Value & @CRLF
.MoveNext
WEnd
EndIf
EndWith
$adoCon.Close
Return $_output
EndFunc ;==>_ReadOneFld
Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
Dim $_output
$adoCon = ObjCreate("ADODB.Connection")
$adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
$adoRs = ObjCreate("ADODB.Recordset")
$adoRs.CursorType = 1
$adoRs.LockType = 3
$adoRs.Open($_sql, $adoCon)
With $adoRs
If .RecordCount Then
While Not .EOF
$_output = $_output & .Fields($_field).Value & "|" ;@CRLF
.MoveNext
WEnd
EndIf
EndWith
$adoCon.Close
Return $_output
EndFunc ;==>_ReadOneFld
im anhang ist die TB.mdb als zip, in dieser sind paar Texte mit Variablen zum testen hinterlegt!
vielleicht kann sich das mal einer ansehen!
danke
Gruß gmmg