Dein angepasstes geht soweit. muss mal schauen ob die werte damit dann beim auslesen passen.
Danke
Gruß gmmg
Dein angepasstes geht soweit. muss mal schauen ob die werte damit dann beim auslesen passen.
Danke
Gruß gmmg
Habe es noch nicht hinbekommen.
#include <Array.au3>
Global $oConnection, $aRecordSet, $sQuery, $aRecordSetArr, $aColumnArr[0], $Spalten
Global $sTableName = "tblTable1"
Global $sDatabaseName = "D:\Test-mdb\Test.mdb"
If Not FileExists($sDatabaseName) Then Exit
$oConnection = ObjCreate("ADODB.Connection")
$oConnection.Open("Driver=Microsoft Access Driver (*.mdb); DBQ=" & $sDatabaseName)
$oRecordSet = ObjCreate("ADODB.RecordSet")
$sQuery = "Select * From " & $sTableName
$oRecordSet.Open($sQuery, $oConnection)
;~ For $i = 0 to $oRecordSet.Fields.Count - 1
;~ _ArrayAdd($aColumnArr, $oRecordSet.Fields.Item($i).Name)
;~ Next
For $i = 0 to $oRecordSet.Fields.Count - 1
;_ArrayAdd($aColumnArr, $oRecordSet.Fields.Item($i).Name)
$Spalten &= $oRecordSet.Fields.Item($i).Name & '|'
Next
MsgBox(0,"",$Spalten)
;~ For $Row = 0 to Ubound($aColumnArr) -1
;~ $Spalten &= $aColumnArr[$Row] & '|'
;~ Next
$Spalten = StringTrimRight($Spalten, 1)
_ArrayAdd($aRecordSetArr, $Spalten, 0)
_ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
$aRecordSetArr = $oRecordSet.GetRows
$oRecordSet.Close()
$oConnection.Close()
_ArrayDisplay($aColumnArr, 'Spaltennamen')
_ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
Alles anzeigen
Moombas die Spaltennamen benötige ich im Array, damit ich die Spalte dann später mit Arraysearch ausauslesen kann bzw. dessen Wert.
Da sich die Spaltennamen in der Position immer mal verschieben können.
Gruß gmmg
Hallo Zusammen,
in der aktuellen Access UDF ist es nicht möglich die Spaltennamen auslesen und im Array mit den Werten Zusammen zu haben.
Es gab von mir da schon mal eine Anfrage, diese konnte damals mit der Hilfe einfach gelöst werden.
Hier mal das alte Thema dazu.
MS Access Read Field + Spaltennamen der Tabellen (Im Beispiel von Musashi ist die Access zum testen angehangen)
Wie im Beispiel werden 2 Arrays erstellt. eines mit Spaltennamen und eines mit den Werten.
Wie kann ich diese nun Zusammenbringen? Irgendwie sehe ich da gerade nicht durch ![]()
#include <Array.au3>
Global $oConnection, $aRecordSet, $sQuery, $aRecordSetArr, $aColumnArr[0]
Global $sTableName = "tblTable1"
Global $sDatabaseName = "D:\Test-mdb\Test.mdb"
If Not FileExists($sDatabaseName) Then Exit
$oConnection = ObjCreate("ADODB.Connection")
$oConnection.Open("Driver=Microsoft Access Driver (*.mdb); DBQ=" & $sDatabaseName)
$oRecordSet = ObjCreate("ADODB.RecordSet")
$sQuery = "Select * From " & $sTableName
$oRecordSet.Open($sQuery, $oConnection)
For $i = 0 to $oRecordSet.Fields.Count - 1
_ArrayAdd($aColumnArr, $oRecordSet.Fields.Item($i).Name)
Next
$aRecordSetArr = $oRecordSet.GetRows
$oRecordSet.Close()
$oConnection.Close()
_ArrayDisplay($aColumnArr, 'Spaltennamen')
_ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
Alles anzeigen
Danke
Gruß gmmg
Link als Lesezeichen gespeichert. Kurzen Blick sagt mir: sieht gut aus.
Ja, kostet € 40,-, aber so wie es dr erste Eindruck zeigt, gut angelegt.
Hallo Alina,
um ein einfaches HDD bzw. SSD Image zu erzeugen, kannst du auch das Tool "disk2vhd" von Sysinternals nutzen.
Das Image kannst du dann bei bedarf einfach unter Windows mit einbinden.
Auch bringt die neueste Win10 bzw. Win11 Version ein neues Backup Tool mit.
Gruß gmmg
@mumpel: Was hast du dir denn genau vorgestellt? Du willst das in deinem Treeview Click Skript nutzten?
Bohne: Welche Fehlermeldung werden in der Konsole angezeigt? ist die Neuste Edge Version installiert.
Bitte mehr Details angeben, sonst kann nicht geholfen werden.
Habe dir mal mein Testverzeichnis inklusive aller benötigten Files gezippt und unten angehangen. Das funktioniert bei mir bei Windows 10.
Sollte das bei dir auch nicht gehen, sollten mal folgende fragen noch geklärt werden:
Ist der Edge auf dem neuesten Update Stand 116.x.x ?
Welche Autoit Version ?
Welches Betriebssystem ?
Das mit dem Webdriver klappt schon. habe dir oben nochmal die fehlenden Files angehangen.
Bitte auch in den Ordner entpacken.
lade dir noch die WinHttp 1.6.4.1 bzw. Winhttp 1.6.4.2 und die Json und lege die in das Verzeichnis.
Gruß gmmg
zum testen -> erstelle ein Verzeichnis. kopiere dort mein obiges Script und folgende Dateien aus dem entpackten Webdriver hinein + die heruntergeladenen msedgedriver.exe
passe den Pfad zum Edgedriver bei _WD_Option an.
Starte das Script und Poste bei Fehlermeldungen dein Script + eventuelle Konsolen ausgaben
mumpel, den Edge Webdriver hast du auch heruntergeladen und entpackt?
Auch den Pfad bei _WD_Option angepasst?
Eine Datenbank ist nicht zwingend notwendig, kann auch eine Txt oder sonstige Datei sein oder die Infos können auch im Quelltext stehen.
Da geht es ja nur darum die Icon Namen irgendwo zu hinterlegen.
Zu den Ico's. Die sind zum Teil selbst aus png Dateien erstellt und stammen auch von Webseiten wo es kostenlose ICO/PNG gibt.
Als Tool habe ich IcoFX benutzt. Da kannst du mal nach IcoFX (letzte Freeware-Version) googeln.
water, Danke fürs übernehmen ![]()
mumpel, schau mal folgenden Post an.
Hatte früher auch die icons per dll benutzt. Da aber alles dynamisch mit Daten aus einer Datenbank erstellt werden soll, habe aber mein Script soweit umgebaut, dass die Info welches Icon benutzt wird aus der DB kommen. Die Icons selbst liegen dann im Script Verzeichnis.
Vielleicht ist es ja was für dich.
Gruß gmmg
Hallo Bohne,
benutzt du für die Automatisierung den Edge Webdriver?
Download: https://developer.microsoft.com/de-de/microsof…ools/webdriver/
Beispiel Skript
#include "wd_helper.au3"
#include "wd_core.au3"
;Global $_WD_DRIVER
Local $sDesiredCapabilities
;$_WD_DEBUG = $_WD_Debug_Info ; None ; Info
$_WD_DEBUG = $_WD_DEBUG_None ;set to $_WD_DEBUG_None before compiling.?
$url = "https://autoit.de/wcf/login/?url=https%3A%2F%2Fautoit.de%2F"
$user = "test"
$pass = "test"
SetupEdge()
_WD_Startup()
; Hide the WebDriver Console
;_WD_ConsoleVisible(True)
_WD_ConsoleVisible(False)
$sSession = _WD_CreateSession($sDesiredCapabilities)
_WD_Window($sSession, "Maximize", "{}")
_WD_Navigate($sSession, $url)
_WD_LoadWait($sSession, 1500)
Sleep(1000)
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='username']")
ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='username']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_user, 'value',$user)
Sleep(500)
EndIf
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@name='password']")
ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_pass = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@name='password']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_pass, 'value',$pass)
Sleep(500)
EndIf
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='loginForm']/form/section[1]/div/input[1]")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement, 'click')
Sleep(500)
EndIf
_WD_Shutdown()
_WD_DeleteSession($sSession)
Exit
Func SetupEdge()
;_WD_Option('Driver', 'msedgedriver.exe')
_WD_Option('Driver', 'D:\Scripte\WebDriver\EdgeDriver\edgedriver_win32\msedgedriver.exe')
_WD_Option('Port', 9515)
;_WD_Option('DriverParams', '--verbose --log-path="' & @ScriptDir & '\msedge.log"')
_WD_Option('DriverParams', '--verbose')
$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
'"ms:edgeOptions": {"excludeSwitches": ["enable-automation"], ' & _
'"useAutomationExtension": false, "args": ["start-maximized"]}}}}'
EndFunc
Alles anzeigen
Gruß gmmg
hab mal noch was in meiner Script Sammlung gefunden. hab aber heute wenig zeit das mal zu prüfen.
#include <GuiTreeView.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
Global $bgcolor = 0x404040, $txtcolor = 0xff8800, $extcolor = 0xffcc00, $items[4000], $names[4000], $StartDir, $TreevieItemNow, $wParam
$StartDir = "D:\Test"
$hGui = GUICreate("Treeview_Test", 800, 600, -1, -1)
$hTreeView = _GUICtrlTreeView_Create($hGui, 2, 2, 180, 600)
$hTreeView_First = _GUICtrlTreeView_AddChild($hTreeView,"","Projekte")
_GUICtrlTreeView_BeginUpdate($hTreeView)
ListFiles_ToTreeView($StartDir, 0)
_GUICtrlTreeView_EndUpdate($hTreeView)
_GUICtrlTreeView_Expand($hTreeView)
GUISetState(@SW_SHOW)
;~ While 1
;~ $msg = GUIGetMsg()
;~ Switch $msg
;~ Case $GUI_EVENT_CLOSE
;~ Exit
;~ Case Else
;~ If $msg >= $items[2] And $msg <= $items[UBound($items) - 1] Then ishidden(_GUICtrlTreeView_GetTree($hTreeView, "\"))
;~ Sleep(20)
;~ GUICtrlSetState($names, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold
;~ EndSwitch
;~ WEnd
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Func ListFiles_ToTreeView($sSourceFolder, $hItem)
Local $sFile
; Force a trailing \
If StringRight($sSourceFolder, 1) <> "\" Then $sSourceFolder &= "\"
; Start the search
Local $hSearch = FileFindFirstFile($sSourceFolder & "*.*")
; If no files found then return
If $hSearch = -1 Then Return ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<<
; Now run through the contents of the folder
While 1
; Get next match
$sFile = FileFindNextFile($hSearch)
; If no more files then close search handle and return
If @error Then ExitLoop ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<<
; Check if a folder
If @extended Then
; If so then call the function recursively
ListFiles_ToTreeView($sSourceFolder & $sFile, _GUICtrlTreeView_AddChild($hTreeView, $hItem, $sFile))
Else
; If a file than write path and name
_GUICtrlTreeView_AddChild($hTreeView, $hItem, $sFile)
EndIf
WEnd
; Close search handle
FileClose($hSearch)
EndFunc ;==>ListFiles_ToTreeView
;~ Func ishidden($file)
;~ Local $attrib
;~ $attrib = FileGetAttrib($file)
;~ MsgBox(0, "", $file & @CRLF & "Properties: " & $attrib)
;~ If StringInStr($attrib, "H") Then Return 1
;~ Return 0
;~ EndFunc ;==>ishidden
Alles anzeigen
Gruß gmmg
mumpel: hab eben was zum Thema Treeview in meinen Scripten gefunden.
Vielleicht ist ein passender Codesnipsel für dich dabei.
#include <GuiTreeView.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
Global $splash, $bgcolor = 0x404040, $txtcolor = 0xff8800, $extcolor = 0xffcc00, $items[4000], $names[4000], $StartDir, $TreevieItemNow
$Main = GUICreate("Treeview_Test", 800, 600, -1, -1)
$Tree = GUICtrlCreateTreeView(2, 2, 180, 600)
$StartDir = "D:\Test\"
;~ $StartDir = @StartMenuDir
;$TrreViewOfprograms = GUICtrlCreateTreeViewItem($StartDir, $Tree)
$TrreViewOfprograms = GUICtrlCreateTreeViewItem("Projekte", $Tree)
$TimerStamp = TimerInit()
MakeList($StartDir, $TrreViewOfprograms, 0)
MakeList($StartDir, $TrreViewOfprograms, 1)
ReDim $items[$items[0] + 1]
ReDim $names[$names[0] + 1]
;ConsoleWrite("$TimerStamp=" & Round(TimerDiff($TimerStamp)) & @LF)
;ConsoleWrite("$items[0]+1=" & $items[0] + 1 & @LF)
;GUICtrlSetState($TrreViewOfprograms, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "General"-item and paint in bold
;GUICtrlSetState($items, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold
_GUICtrlTreeView_Expand($Tree)
Local $Mailedit = GUICtrlCreateEdit("First line" & @CRLF, 190, 300, 600, 290, 0x0080 + 0x0040 + 0x1000)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case Else
If $msg >= $items[1] And $msg <= $items[UBound($items) - 1] Then ishidden(_GUICtrlTreeView_GetTree($Tree, "\"))
Sleep(20)
GUICtrlSetState($names, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold
EndSwitch
WEnd
Func MakeList($dir, $TreeViewOfprograms, $mode = 0)
FileChangeDir($dir)
$search = FileFindFirstFile("*.*")
While 1
$file = FileFindNextFile($search);
If @error Then ExitLoop
$GetExt = GetExt($dir & "\" & $file)
If $items[0] > 3998 Then ExitLoop
If $GetExt <> "folder" And $mode = 1 And $GetExt <> "ini" Then;And $GetExt <> "lnk" And $GetExt <> "ini"
$items[0] += 1
$names[0] += 1
$items[ $items[0] ] = GUICtrlCreateTreeViewItem($file, $TreeViewOfprograms)
$names[ $names[0] ] = $file;$file$dir & "\" &
GUICtrlSetColor($items[ $items[0]], $txtcolor)
ElseIf $GetExt = "folder" And $mode = 0 Then;And $GetExt <> "INI"
$TreevieItemNow = GUICtrlCreateTreeViewItem($file, $TreeViewOfprograms)
$items[0] += 1
$names[0] += 1
$items[ $items[0] ] = $TreevieItemNow
$names[ $names[0] ] = $file;$file;$dir & "\" &
GUICtrlSetColor($items[ $items[0]], $extcolor)
MakeList($dir & "\" & $file, $TreevieItemNow, 0)
MakeList($dir & "\" & $file, $TreevieItemNow, 1)
EndIf
WEnd
FileClose($search)
EndFunc ;==>MakeList
Func GetExt($file)
If StringInStr(FileGetAttrib($file), "D") Then Return "folder"
Return StringUpper(StringTrimLeft($file, StringInStr($file, ".", 0, -1))) ;return only extension
EndFunc ;==>GetExt
Func ishidden($file)
Local $attrib
$attrib = FileGetAttrib($file)
MsgBox(0, "", $file & @CRLF & "Properties: " & $attrib)
If StringInStr($attrib, "H") Then Return 1
Return 0
EndFunc ;==>ishidden
Alles anzeigen
Gruß gmmg
auf GitHub gibt es einen FileExplorer, den kann man anpassen, dass nur 2 Spalten (Folder/Files und die Vorschau) existieren.
Eventuell kann man da aus dem Quelltext etwas ableiten.
Gruß gmmg
Das klingt doch gut. Viel Erfolg
Gruß gmmg