• Nabend
    ich muss mein Script wohl nun unvollendet vorstellen. Ich musste auch ein paar Sachen entkernen
    da ich es für meine Arbeit(skollgen) und mich gebastelt habe. Hoffe das die eigentliche Funktion nicht darunter gelitten hat.

    Sinn und Zweck des Programmes ist eine simple DSN Konfiguration zu ermöglichen.
    Quasi das schnelle Finden und Einrichten von Datenbankverbindungen, momentan MSSQL.
    Bzw. Löschen vorhandener Datenquellen. Gegenprüfen der hinterlegten ist noch nicht enthalten.

    Prinzipiell funktioniert das meiste aber ich finde einen Fehler nicht und komme da nicht weiter,
    bei der Gelegenheit könnte ich noch ein paar Unschönheiten erfragen?

    Nun gut Ihr seid gewarnt....

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=..\..\Charlie-Brown-2.ico
    #AutoIt3Wrapper_outfile=odbc-generator.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Comment=Ermitteln der vorhandenen Datenbanken von hinterlegten Servern und Importdatei generieren
    #AutoIt3Wrapper_Res_Description=Regdatei für DSNs generieren
    #AutoIt3Wrapper_Res_Fileversion=0.1.0.97
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_Field=ProductName|ODBC-Generator
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.2.13.10 (beta)
    Author: Dietmar R.
    Script Function: Ermitteln der vorhandenen Datenbanken von hinterlegten Servern
    Anzeigen der Datenbanken in einer Liste zur Auswahl
    Regdatei generieren für Import auf den ASP Servern

    [/autoit] [autoit][/autoit] [autoit]

    select TOP(1)UpText,UpDatum from SysUpd order by Cnt desc

    [/autoit] [autoit][/autoit] [autoit]

    select name,
    case status
    when 32 then 'loading'
    when 128 then 'recovering'
    when 512 then 'offline'
    when 4096 then 'single user'
    when 64 then 'pre recovery'
    when 256 then 'not recovered'
    else 'Normal'
    end
    from sysdatabases
    where name not in('master','msdb','model','tempdb','reportserver','reportservertempdb','datacomsqlaudit','pubs','distribution','northwind')

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListBox.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #include <array.au3>
    #include <ComboConstants.au3> ;für Combobox disablen
    #include <C:\Autoit_SVN\UDF\MS-SQL.au3>
    ;~ #include <c:\Autoit_SVN\UDF\RegFunc.au3>
    #include <c:\Autoit_SVN\UDF\LV_Format.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;~ #RequireAdmin ;kann man machen ich finde den UAC Dialog aber abstossend

    [/autoit] [autoit][/autoit] [autoit]

    Dim $DB_User = "DBUSER"
    Dim $DB_Pass = "DBPASS"
    Dim $DB_Server
    ;~ Dim $DB_Server_Port
    ;~ Dim $DB_Server_Array
    ;~ Dim $DB_Name
    Dim $Script_Dir = @ScriptDir
    Dim $DB_Server_Default
    Dim $Reg_Writeable

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Bedingungen für Programmstart / Ablauf prüfen (Ini etc)
    ;~-------------------------------------------------------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    If StringRight($Script_Dir,1) <> "\" Then $Script_Dir &= "\"
    ;~ If Not FileExists($Script_Dir & "odbc-generator.ini") Then FileInstall("C:\AutoIT_SVN\Eigene Scripte\Dietmar\ODBC-Generator\odbc-generator.ini", $Script_Dir & "odbc-generator.ini")
    ;~ If Not FileExists(@TempDir & "\AutoIt-Tools-Updater.exe") Then FileInstall("C:\AutoIT_SVN\Eigene Scripte\Dietmar\AutoIt-Tools-Updater\AutoIt-Tools-Updater.exe", @TempDir & "\AutoIt-Tools-Updater.exe")

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $UpdateDir = IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","UpdateDir","")
    ;~ If $UpdateDir <> "" And IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","PrgUpdate",0) = 1 Then RunWait(@TempDir & '\AutoIt-Tools-Updater.exe "' & $Script_Dir & '" "' & @ScriptName & '" "' & $UpdateDir & '"')

    [/autoit] [autoit][/autoit] [autoit]

    ;~ FileDelete(@TempDir & "\AutoIt-Tools-Updater.exe")

    [/autoit] [autoit][/autoit] [autoit]

    $DB_Server_Choice = "Datenbank-Server intern|ASP Datenbank-Server|Eigene Auswahl|Komplette Liste"
    $DB_Server_Default = IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","Server-Standardfilter","")
    If Not StringInStr($DB_Server_Choice, $DB_Server_Default) Or $DB_Server_Default = "" Then $DB_Server_Default = "Datenbank-Server intern"

    [/autoit] [autoit][/autoit] [autoit]

    $DB_Filter_Default = IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","DB-Standardfilter","")
    If $DB_Filter_Default = "" Then $DB_Filter_Default = "Alle Datenbanken"
    $DB_Filter_Choice = "Alle Datenbanken|DB* (ASP Kunden)|WebT|WebS|"
    If Not StringInStr($DB_Filter_Choice, $DB_Filter_Default) Or $DB_Filter_Default = "" Then $DB_Filter_Choice = $DB_Filter_Choice & $DB_Filter_Default

    [/autoit] [autoit][/autoit] [autoit]

    $DSN_Name_Default = IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","DSN-Standardfilter","")
    If $DSN_Name_Default = "" Then $DSN_Name_Default = "DSN = [Datenbank]"
    $DSN_Name_Choice = "DSN = [Datenbank]|DSN = [Datenbank]-[Server]|DSN = [Server]-[Datenbank]|DSN = ASP-[Datenbank]|DSN = FIRMA-[Datenbank]|DSN = intern-[Datenbank]|DSN = lokal-[Datenbank]|"
    If Not StringInStr($DSN_Name_Choice, $DSN_Name_Default) Or $DSN_Name_Default = "" Then $DSN_Name_Choice = $DSN_Name_Choice & $DSN_Name_Default

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Backup_Dir = IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","Backup-Dir","")
    If $Backup_Dir = "" Then $Backup_Dir = @MyDocumentsDir & "\Backup-ODBC\"

    [/autoit] [autoit][/autoit] [autoit]

    Global $g_eventerror = 0 ; to be checked to know if com error occurs. Must be reset after handling.

    [/autoit] [autoit][/autoit] [autoit]

    $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; Install a custom error handler

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ GUI für Programmstart / Ablauf
    ;~-------------------------------------------------------------------------------------------------------------------------------
    _Test_ODBC() ; Prüfen ob HKLM änderbar ist

    [/autoit] [autoit][/autoit] [autoit]

    If $CmdLine[0] = 0 Then ; Prüfen ob das Programm mit Parametern aufgerufen wurde

    [/autoit] [autoit][/autoit] [autoit]

    $Form1_1 = GUICreate("ODBC - Generator", 1024, 768,1,1,$WS_SIZEBOX + $WS_SYSMENU + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX);, 193, 115) ; Start GUI
    $Tab1 = GUICtrlCreateTab(0, 20, 1980, 27)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKTOP + $GUI_DOCKLEFT)
    $TabSheet1 = GUICtrlCreateTabItem("Auswählbare und existierende Datenquellen")
    $Group_Links_Tab1 = GUICtrlCreateGroup("", 10, 50, 500, 685)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Konfigurierbare MSSQL-Datenquellen", 16, 65)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKTOP + $GUI_DOCKLEFT)
    $Button_SelectAll_Tab1 = GUICtrlCreateButton("Alles markieren?", 360, 65, 113, 17, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKTOP + $GUI_DOCKHCENTER)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView_Label_Tab1 = "DSN-Name|Datenbankserver|Datenbankname|DB-Collation|Status"
    $ListView_DSN_DB_Tab1 = GUICtrlCreateListView($ListView_Label_Tab1, 15, 90, 490, 573,$LVS_REPORT)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    $hListView_DSN_DB_Tab1 = GUICtrlGetHandle($ListView_DSN_DB_Tab1)
    _Resize_Collum($hListView_DSN_DB_Tab1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Suchbereich festlegen: ", 35, 675, -1, 30)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    $Combo_DB_Range_Tab1 = GUICtrlCreateCombo("",30,700,140,25, $CBS_DROPDOWNLIST)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    GUICtrlSetData($Combo_DB_Range_Tab1,$DB_Server_Choice,$DB_Server_Default)
    $Button_Refresh_Server_Tab1 = GUICtrlCreateButton("#", 153, 675, 17, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Bildungsregeln für DSN ", 185, 675, -1, 30)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    $Combo_DSN_Name_Tab1 = GUICtrlCreateCombo("",180,700,160,25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    GUICtrlSetData($Combo_DSN_Name_Tab1,$DSN_Name_Choice,$DSN_Name_Default)
    $Button_Refresh_DSN_Tab1 = GUICtrlCreateButton("#", 323, 675, 17, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Datenbank Filter: ", 355, 675, -1, 30)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    $Combo_DB_Filter_Tab1 = GUICtrlCreateCombo("",350,700,120,25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)
    GUICtrlSetData($Combo_DB_Filter_Tab1,$DB_Filter_Choice,$DB_Filter_Default)
    $Button_Refresh_DB_Tab1 = GUICtrlCreateButton("#", 453,675, 17, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKLEFT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup("", -99, -99, 1, 1) ; Ende Auswahl linke Seite

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Group_Rechts_Tab1 = GUICtrlCreateGroup("", 514, 50, 500, 685)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKHCENTER)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("System DSN:", 520, 65, 67, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKHCENTER)
    $Button_System_Valid_Tab1 = GUICtrlCreateButton("DSN validieren", 650, 65, 113, 17, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
    $Check_System_Del_Tab1 = GUICtrlCreateCheckbox("", 840, 65, 17, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKSIZE + $GUI_DOCKRIGHT)
    $Button_System_Del_Tab1 = GUICtrlCreateButton("markierte löschen?", 872, 65, 113, 17, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKSIZE + $GUI_DOCKRIGHT)
    $ListView_System_Tab1 = GUICtrlCreateListView("€|DSN-Name|Datenbankserver|Datenbankname|DB-Collation|Status", 520, 90, 489, 264,$LVS_REPORT)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKHCENTER)
    $hListView_System_Tab1 = GUICtrlGetHandle($ListView_System_Tab1)
    _Resize_Collum($hListView_System_Tab1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("User DSN:", 520, 374, 55, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKVCENTER)
    $Button_User_Valid_Tab1 = GUICtrlCreateButton("DSN validieren", 650, 374, 113, 17, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKVCENTER + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
    $Check_User_Del_Tab1 = GUICtrlCreateCheckbox("", 840, 374, 17, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKVCENTER + $GUI_DOCKSIZE + $GUI_DOCKRIGHT)
    $Button_User_Del_Tab1 = GUICtrlCreateButton("markierte löschen?", 872, 374, 113, 17, 0)
    GUICtrlSetResizing(-1, $GUI_DOCKVCENTER + $GUI_DOCKSIZE + $GUI_DOCKRIGHT)
    $ListView_User_Tab1 = GUICtrlCreateListView("€|DSN-Name|Datenbankserver|Datenbankname|DB-Collation|Status", 520, 399, 489, 264,$LVS_REPORT)
    GUICtrlSetResizing(-1, $GUI_DOCKVCENTER + $GUI_DOCKBOTTOM)
    $hListView_User_Tab1 = GUICtrlGetHandle($ListView_User_Tab1)
    _Resize_Collum($hListView_User_Tab1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Button_Import_Tab1 = GUICtrlCreateButton("GO", 550, 680,35,35)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)

    [/autoit] [autoit][/autoit] [autoit]

    $Radio_HKLM_Reg_Tab1 = GUICtrlCreateRadio('"System-Datenquellen erzeugen."',620,675,-1,30)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
    $Radio_HKCU_Reg_Tab1 = GUICtrlCreateRadio('"Benutzer-Datenquellen erzeugen."',620,700,-1,30)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
    $Check_Do_Backup_Tab1 = GUICtrlCreateCheckbox("Backup erzeugen",820,675,-1,30)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
    If IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","Backup","") = 1 Then GUICtrlSetState(-1,$GUI_CHECKED)
    $Check_Change_DSN_Tab1 = GUICtrlCreateCheckbox("Datenquellen überschreiben?",820,700,-1,30)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)
    If IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","DSN-überschreiben","") = 1 Then GUICtrlSetState(-1,$GUI_CHECKED)
    $Button_Save_Tab1 = GUICtrlCreateButton("...", 955, 680,20,20)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKSIZE + $GUI_DOCKHCENTER)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aHWnd_Tab1[3] = [$hListView_DSN_DB_Tab1,$hListView_System_Tab1,$hListView_User_Tab1]

    [/autoit] [autoit][/autoit] [autoit]

    If $Reg_Writeable = "yes" Then
    If IniRead($Script_Dir & "odbc-generator.ini","Konfiguration","Reg-Ziel","") = "HKLM" Then GUICtrlSetState($Radio_HKLM_Reg_Tab1,$GUI_CHECKED)
    Else
    GUICtrlSetState($Radio_HKCU_Reg_Tab1,$GUI_CHECKED)
    GUICtrlSetState($Radio_HKLM_Reg_Tab1,$GUI_DISABLE)
    GUICtrlSetState($Check_System_Del_Tab1,$GUI_DISABLE)
    GUICtrlSetState($Button_System_Del_Tab1,$GUI_DISABLE)
    GUICtrlSetState($Button_System_Valid_Tab1,$GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_Formatting_Startup($Form1_1, $aHWnd_Tab1)
    _Fill_System_DSN_Listbox("HKEY_LOCAL_MACHINE",$ListView_System_Tab1)
    _Fill_System_DSN_Listbox("HKEY_CURRENT_USER",$ListView_User_Tab1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $TabSheet2 = GUICtrlCreateTabItem("Schnellanlage einer einzelnen Datenquelle")
    $TabSheet3 = GUICtrlCreateTabItem("Schnellanlage von Oracle Datenquellen")
    $TabSheet4 = GUICtrlCreateTabItem("Konfiguration und weitere Optionen")
    $TabSheet5 = GUICtrlCreateTabItem("Hilfe / Info - ODBC-Generator")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_GETMINMAXINFO, '_WM_GETMINMAXINFO') ; gehört zur Resizing Funktion

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button_Refresh_Server_Tab1 ; TAB1
    ;~ If FileExists(@TempDir & "\tmp_server.ini") Then FileDelete(@TempDir & "\tmp_server.ini")
    If GUICtrlRead($Combo_DB_Range_Tab1) = "Datenbank-Server intern" Then
    _Get_Server_DB_Names("FIRMA-DB-Server")
    ElseIf GUICtrlRead($Combo_DB_Range_Tab1) = "ASP Datenbank-Server" Then
    _Get_Server_DB_Names("ASP-DB-Server")
    ElseIf GUICtrlRead($Combo_DB_Range_Tab1) = "Eigene Auswahl" Then
    _Get_Server_DB_Names("Meine-DB-Server")
    Else
    _Get_Server_DB_Names("FIRMA-DB-Server")
    _Get_Server_DB_Names("ASP-DB-Server")
    _Get_Server_DB_Names("Meine-DB-Server")
    EndIf
    _Fill_Server_DSN_Listbox(GUICtrlRead($Combo_DB_Filter_Tab1))
    Case $Button_Refresh_DSN_Tab1
    _Fill_Server_DSN_Listbox(GUICtrlRead($Combo_DB_Filter_Tab1))
    Case $Button_Refresh_DB_Tab1
    _Fill_Server_DSN_Listbox(GUICtrlRead($Combo_DB_Filter_Tab1))
    Case $Button_SelectAll_Tab1
    _GUICtrlListView_SetItemSelected($hListView_DSN_DB_Tab1, 0, True)
    Case $Button_Import_Tab1
    If GUICtrlRead($Radio_HKLM_Reg_Tab1) = 1 Then
    _Write_ODBC_Regkey("HKEY_LOCAL_MACHINE")
    Else
    _Write_ODBC_Regkey("HKEY_CURRENT_USER")
    EndIf
    Case $Button_System_Del_Tab1
    _Delete_ODBC_Regkey($ListView_System_Tab1,"HKEY_LOCAL_MACHINE")
    Case $Button_User_Del_Tab1
    _Delete_ODBC_Regkey($ListView_User_Tab1,"HKEY_CURRENT_USER")
    Case $Button_Save_Tab1
    _Save_Config_Tab1()

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd
    Else
    If $CmdLine[1] = "/generate" Then
    _Get_Server_DB_Names("FIRMA-DB-Server")
    Exit
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Funktionen für Programmstart / Ablauf
    ;~-------------------------------------------------------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    Func _Resize_Collum($Column) ; Spaltenbreite des Grids anpassen
    Select
    Case $Column = $hListView_DSN_DB_Tab1
    For $i = 0 To 3
    _GUICtrlListView_SetColumnWidth($Column, $i, 106)
    Next
    Case Else
    For $i = 0 To 4
    If $i = 0 Then
    _GUICtrlListView_SetColumnWidth($Column, $i, 24)
    Else
    _GUICtrlListView_SetColumnWidth($Column, $i, 105)
    EndIf
    Next
    EndSelect
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Disable_Tab1($Control_Status)
    If $Control_Status = 1 Then
    GUICtrlSetState($Button_Refresh_Server_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_Refresh_DSN_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_Refresh_DB_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_Import_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_System_Valid_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_System_Del_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_User_Valid_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_User_Del_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Button_SelectAll_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Combo_DB_Range_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Combo_DSN_Name_Tab1,$GUI_ENABLE)
    GUICtrlSetState($Combo_DB_Filter_Tab1,$GUI_ENABLE)
    Else
    GUICtrlSetState($Button_Refresh_Server_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_Refresh_DSN_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_Refresh_DB_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_Import_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_System_Valid_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_System_Del_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_User_Valid_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_User_Del_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Button_SelectAll_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Combo_DB_Range_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Combo_DSN_Name_Tab1,$GUI_DISABlE)
    GUICtrlSetState($Combo_DB_Filter_Tab1,$GUI_DISABlE)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Get_Server_DB_Names($DB_Server_Selection) ; Servernamen aus der Ini Datei einlesen
    _Disable_Tab1(0)
    $DB_Server_Array = IniReadSection($Script_Dir & "odbc-generator.ini",$DB_Server_Selection)
    If @error Then
    MsgBox(0,"Achtung - Konfigurationsfehler",'Bitte überprüfen Sie die "odbc-generator.ini"' & @CRLF & "Alternativ löschen Sie die Datei und starten das Programm erneut.")
    Exit
    EndIf
    For $cnt_dbs = 1 to UBound($DB_Server_Array,1) - 1
    $Ping_Reply = Ping($DB_Server_Array[$cnt_dbs][0],5) ; Check ob Server erreichbar
    If Not @error And $Ping_Reply = 1 Then _Query_Server($DB_Server_Array[$cnt_dbs][0],$DB_Server_Array[$cnt_dbs][1])
    Next
    _Disable_Tab1(1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Query_Server($DB_Server,$DB_Server_Port) ; Master DB Abfrage und temporäre Ini Datei füllen
    If $DB_Server_Port <> 1433 Then
    If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo", $DB_Server) <> "DBMSSOCN," & $DB_Server & "," & $DB_Server_Port Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo", $DB_Server, "REG_SZ", "DBMSSOCN," & $DB_Server & "," & $DB_Server_Port)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sql = _SQLCon($DB_Server, $DB_User, $DB_Pass, "master")

    [/autoit] [autoit][/autoit] [autoit]

    If $g_eventerror then
    $g_eventerror = 0
    Else
    $version = _SQLQuery($sql, "SELECT SERVERPROPERTY('productversion') as Version")
    With $version
    While Not .EOF
    $sql_version = .Fields("Version").value
    .MoveNext
    WEnd
    EndWith

    [/autoit] [autoit][/autoit] [autoit]

    If StringLeft($sql_version,1) = 8 Then
    $var = _SQLQuery($sql, "select name from sysdatabases where sid <> 0x01")
    With $var
    While Not .EOF
    IniWrite(@TempDir & "\tmp_server.ini",$DB_Server,.Fields("name").value,"SQL2000" & "|" & "No Support")
    .MoveNext
    WEnd
    EndWith
    Else
    $var = _SQLQuery($sql, "select name,collation_name,state_desc from sys.databases where owner_sid <> 0x01")
    With $var
    While Not .EOF
    IniWrite(@TempDir & "\tmp_server.ini",$DB_Server,.Fields("name").value,.Fields("collation_name").value & "|" & .Fields("state_desc").value)
    .MoveNext
    WEnd
    EndWith
    EndIf
    _SQLEnd($sql)
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    Return
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Fill_Server_DSN_Listbox($DB_Filter) ; temporäre Ini Datei für DB Grid auslesen
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView_DSN_DB_Tab1))
    _Disable_Tab1(0)
    _ReduceMem()

    [/autoit] [autoit][/autoit] [autoit]

    $DSN_Create = GUICtrlRead($Combo_DSN_Name_Tab1)

    [/autoit] [autoit][/autoit] [autoit]

    $cnt_dbserver=IniReadSectionNames(@TempDir & "\tmp_server.ini")

    [/autoit] [autoit][/autoit] [autoit]

    For $i_cnt = 1 to UBound($cnt_dbserver,1) -1
    $cnt_dbname=IniReadSection(@TempDir & "\tmp_server.ini",$cnt_dbserver[$i_cnt])

    [/autoit] [autoit][/autoit] [autoit]

    For $j_cnt = 1 to UBound($cnt_dbname,1) -1

    [/autoit] [autoit][/autoit] [autoit]

    Switch $DSN_Create
    Case '', "DSN = [Datenbank]"
    $DSN_Name = $cnt_dbname[$j_cnt][0]
    Case "DSN = [Datenbank]-[Server]"
    $DSN_Name = $cnt_dbname[$j_cnt][0] & "-" & $cnt_dbserver[$i_cnt]
    Case "DSN = [Server]-[Datenbank]"
    $DSN_Name = $cnt_dbserver[$i_cnt] & "-" & $cnt_dbname[$j_cnt][0]
    Case "DSN = ASP-[Datenbank]"
    $DSN_Name = "ASP-" & $cnt_dbname[$j_cnt][0]
    Case "DSN = FIRMA-[Datenbank]"
    $DSN_Name = "FIRMA-" & $cnt_dbname[$j_cnt][0]
    Case "DSN = intern-[Datenbank]"
    $DSN_Name = "intern-" & $cnt_dbname[$j_cnt][0]
    Case "DSN = lokal-[Datenbank]"
    $DSN_Name = "lokal-" & $cnt_dbname[$j_cnt][0]
    Case Else
    If StringLeft($DSN_Create,1) = "-" Then
    $DSN_Name = $cnt_dbname[$j_cnt][0] & $DSN_Create
    Else
    $DSN_Name = $DSN_Create & "-" & $cnt_dbname[$j_cnt][0]
    EndIf
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    Switch $DB_Filter
    Case "Alle Datenbanken" , ''
    If StringLeft($cnt_dbname[$j_cnt][0],4) = "CITR" or StringLeft($cnt_dbname[$j_cnt][0],4) = "NoSP" or StringLeft($cnt_dbname[$j_cnt][0],4) = "CTXR" Then
    Sleep(1)
    Else
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    EndIf
    Case "DB* (ASP Kunden)"
    If StringLeft($cnt_dbname[$j_cnt][0],2) = "DB" Then _
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    Case "WebT"
    If StringInStr($cnt_dbname[$j_cnt][0],"WebT",2) Then _
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    Case "WebS"
    If StringInStr($cnt_dbname[$j_cnt][0],"WebS",2) Then _
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    Case "Spam"
    If StringLeft($cnt_dbname[$j_cnt][0],4) = "NoSP" Then _
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    Case "Citrix"
    If StringLeft($cnt_dbname[$j_cnt][0],4) = "CITR" or StringLeft($DSN_Name,4) = "CTXR" Then _
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    Case Else
    If StringInStr($cnt_dbname[$j_cnt][0],$DB_Filter,2) Then _
    _GUICtrlListView_AddOrIns_Item($hListView_DSN_DB_Tab1, $DSN_Name & "|" & $cnt_dbserver[$i_cnt] & "|" & $cnt_dbname[$j_cnt][0] & "|" & $cnt_dbname[$j_cnt][1])
    EndSwitch
    Next
    Next
    _Mark_DSN($ListView_DSN_DB_Tab1)
    _Disable_Tab1(1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Fill_System_DSN_Listbox($Reg_Path,$Target_Listbox) ; Registry auslesen für System/User Grids
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Target_Listbox))

    [/autoit] [autoit][/autoit] [autoit]

    For $i_cnt = 1 to 100
    $DSN_Name = RegEnumVal($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", $i_cnt)
    If Not @error Or $DSN_Name = "" Then
    $ODBC_Driver = RegRead($Reg_Path & "\Software\ODBC\ODBC.INI\ODBC Data Sources", $DSN_Name)
    If $ODBC_Driver = "SQL Server" Then ;Or $reg_odbcdriver = "Access" Then

    [/autoit] [autoit][/autoit] [autoit]

    $DB_Server=RegRead($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $DSN_Name, "Server")
    $DB_Name=RegRead($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $DSN_Name, "Database")
    $DB_Description = RegRead($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $DSN_Name, "Description")
    If $DB_Description = "" Then $DB_Description = "keine Beschreibung"
    $DB_AutoTranslate = RegRead($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $DSN_Name, "AutoTranslate")
    If @error Then $DB_AutoTranslate = " *"
    _GUICtrlListView_AddOrIns_Item($Target_Listbox, $DB_AutoTranslate & "|" & $DSN_Name & "|" & $DB_Server & "|" & $DB_Name & "|" & $DB_Description)
    EndIf
    EndIf
    Next
    _Mark_DSN($Target_Listbox)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Mark_DSN($Target_Listbox) ; Non Latin Collations markieren
    If $Target_Listbox = $ListView_DSN_DB_Tab1 Then
    $Mark_Col = 3
    Else
    $Mark_Col = 4
    EndIf
    For $i = 0 To _GUICtrlListView_GetItemCount($Target_Listbox) -1
    $Test_Col = _GUICtrlListView_GetItemText($Target_Listbox, $i, $Mark_Col)
    If Not StringInStr($Test_Col,'LATIN') And $Test_Col <> '' And $Test_Col <> "SQL2000" And $Test_Col <> "keine Beschreibung" Then
    _GUICtrlListView_FormattingCell($Target_Listbox, $i, $Mark_Col, 0x00FFFF, -1, -1, 300);, 'Times New Roman')
    EndIf
    Next
    For $i = 0 To _GUICtrlListView_GetItemCount($Target_Listbox) -1
    If _GUICtrlListView_GetItemText($Target_Listbox, $i, 4) = 'Offline' Then
    _GUICtrlListView_FormattingCell($Target_Listbox, $i, 4, 0xff0000, -1, -1, 300);, 'Times New Roman')
    EndIf
    Next
    _Disable_Tab1(1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Write_ODBC_Regkey($Reg_Path) ; Registryeinträge schreiben und Berechtigung prüfen
    $DB_Selection = _GUICtrlListView_GetSelectedIndices($hListView_DSN_DB_Tab1, True)
    If $DB_Selection[0] = 0 Then
    MsgBox(0,"Keine Datenquellen erzeugt","Es wurde keine Auswahl getroffen.")
    Return
    Else
    If GUICtrlRead($Check_Do_Backup_Tab1) = 1 Then _Backup_ODBC($Reg_Path,"before-import")

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($DB_Selection,1) -1
    $Reg_Key = _GUICtrlListView_GetItemTextArray($ListView_DSN_DB_Tab1,$DB_Selection[$i])
    ;~ If GUICtrlRead($Check_Change_DSN_Tab1) = 1 Or Not _ArraySearch($DSN_Exists,$Reg_Key[1]) Then
    RegWrite($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $Reg_Key[1], "Driver","REG_SZ", @SystemDir & "\sqlsrv32.dll") ;C:\WINDOWS\\system32
    RegWrite($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $Reg_Key[1], "Server","REG_SZ", $Reg_Key[2])
    RegWrite($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $Reg_Key[1], "Database", "REG_SZ",$Reg_Key[3])
    RegWrite($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $Reg_Key[1], "Description", "REG_SZ",$Reg_Key[4])
    RegWrite($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $Reg_Key[1], "LastUser", "REG_SZ", "DBUSER")
    RegWrite($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\", $Reg_Key[1], "REG_SZ", "SQL Server")
    ;~ EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $Reg_Path = "HKEY_LOCAL_MACHINE" Then _Fill_System_DSN_Listbox("HKEY_LOCAL_MACHINE",$ListView_System_Tab1)
    If $Reg_Path = "HKEY_CURRENT_USER" Then _Fill_System_DSN_Listbox("HKEY_CURRENT_USER",$ListView_User_Tab1)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Delete_ODBC_Regkey($Target_Listbox,$Reg_Path) ; Registryeinträge löschen und Berechtigung prüfen
    $DSN_Selection = _GUICtrlListView_GetSelectedIndices($Target_Listbox, True)
    If $DSN_Selection[0] = 0 Then
    MsgBox(0,"Keine Datenquellen gelöscht","Es wurde keine Auswahl getroffen.")
    Return
    Else
    If $Reg_Path = "HKEY_CURRENT_USER" Then
    If GUICtrlRead($Check_User_Del_Tab1) <> 1 Then
    MsgBox(0,"Sicherheitsabfrage",'Sollen die markierten "Benutzer Datenquellen" wirklich gelöscht werden?')
    Return
    EndIf
    Else
    If GUICtrlRead($Check_System_Del_Tab1) <> 1 Then
    MsgBox(0,"Sicherheitsabfrage",'Sollen die markierten "System Datenquellen" wirklich gelöscht werden?')
    Return
    EndIf
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($Check_Do_Backup_Tab1) = 1 Then _Backup_ODBC($Reg_Path,"before-delete")

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($DSN_Selection,1) -1
    $Reg_Key = _GUICtrlListView_GetItemTextArray($Target_Listbox,$DSN_Selection[$i])
    RegDelete($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\" & $Reg_Key[2])
    RegDelete($Reg_Path & "\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\", $Reg_Key[2])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $Reg_Path = "HKEY_LOCAL_MACHINE" Then _Fill_System_DSN_Listbox("HKEY_LOCAL_MACHINE",$ListView_System_Tab1)
    If $Reg_Path = "HKEY_CURRENT_USER" Then _Fill_System_DSN_Listbox("HKEY_CURRENT_USER",$ListView_User_Tab1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Backup_ODBC($Reg_Path,$Backup_Info) ; Backup Dir erzeugen falls erforderlich und Backup des notwendigen Regkeys erzeugen
    If Not FileExists($Backup_Dir) Then DirCreate($Backup_Dir)
    $Backup_File = "ODBC-" & @YEAR & "_" & @MON & "_" & @MDAY & "-" & @HOUR & "_" & @MIN & "_" & @SEC & "-" & $Backup_Info & ".reg"
    If $Reg_Path = "HKEY_LOCAL_MACHINE" Then Run('regedit.exe /e "' & $Backup_Dir & "HKLM-" & $Backup_File & '" ' & '"' & $Reg_Path & "\SOFTWARE\ODBC\ODBC.INI" & '"')
    If $Reg_Path = "HKEY_CURRENT_USER" Then Run('regedit.exe /e "' & $Backup_Dir & "HKCU-" & $Backup_File & '" ' & '"' & $Reg_Path & "\SOFTWARE\ODBC\ODBC.INI" & '"')
    MsgBox(4096,"[" & $Reg_Path & "\SOFTWARE\ODBC\ODBC.INI]", "Der Schlüssel wurde gesichert." & @CRLF & "Sicherungspfad:" & @TAB & $Backup_Dir & @CRLF & "Sicherungsdatei:" & @TAB & "HKCU-" & $Backup_File)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Test_ODBC() ; Erzeugen eines RegKeys unter HKLM / falls erfolgreich Admin ansonsten User
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\" & "CheckRights", "Server","REG_SZ", "Zugriff erfolgreich")
    If @error Then
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(17,"Kein Schreibzugriff auf Registry Pfad HKLM\Software\ODBC\...", _
    "Sie verfügen nicht über die nötigen Berechtigungen " & @CRLF & '"System Datenquellen" zu erzeugen.' & _
    @CRLF & @CRLF & 'Um "System Datenquellen" zu erzeugen melden Sie sich ' & _
    @CRLF & "bitte als Administrator am System an oder starten Sie das Programm" & _
    @CRLF & 'mit der rechten Maustase und "Als Administrator ausführen..."' & @CRLF & _
    @CRLF & 'Alternativ können Sie nur "Benutzer Datenquellen" erzeugen.' & @CRLF & _
    @CRLF & "Diesen Dialog und das Programm mit [Abbrechen] beenden oder " & @CRLF & 'mit [OK] "Benutzer Datenquellen" erzeugen?')
    Select
    Case $iMsgBoxAnswer = 1 ;OK
    $Reg_Writeable = "no"
    Case $iMsgBoxAnswer = 2 ;Cancel
    Exit
    EndSelect
    Else
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\" & "CheckRights")
    $Reg_Writeable = "yes"
    EndIf
    Return $Reg_Writeable
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    func _Save_Config_Tab1() ; Speichern der MSSQL Einstellungen
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","DB-Standardfilter",GUICtrlRead($Combo_DB_Filter_Tab1))
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","DSN-Standardfilter",GUICtrlRead($Combo_DSN_Name_Tab1))
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","Server-Standardfilter",GUICtrlRead($Combo_DB_Range_Tab1))
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","Backup",GUICtrlRead($Check_Do_Backup_Tab1))
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","DSN-überschreiben",GUICtrlRead($Check_Change_DSN_Tab1))

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($Radio_HKLM_Reg_Tab1) = 1 Then
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","Reg-Ziel","HKLM")
    Else
    IniWrite($Script_Dir & "odbc-generator.ini","Konfiguration","Reg-Ziel","HKCU")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"Information:","Einstellungen wurden gespeichert.")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func MyErrFunc() ; COM Fehler abfangen / Falls SQL Server für Query nicht verfügbar etc
    Msgbox(0,"Verbindungsfehler: " & $DB_Server,"We intercepted a COM Error !" & @CRLF & @CRLF & _
    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
    "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
    "err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
    "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
    "err.source is: " & @TAB & $oMyError.source & @CRLF & _
    "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
    "err.helpcontext is: " & @TAB & $oMyError.helpcontext _
    )

    [/autoit] [autoit][/autoit] [autoit]

    Local $err = $oMyError.number
    If $err = 0 Then $err = -1

    [/autoit] [autoit][/autoit] [autoit]

    $g_eventerror = $err ; to check for after this function returns
    Endfunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WM_GETMINMAXINFO($hWnd, $msg, $wParam, $lParam) ; Funktion für Resizing
    Local $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
    Switch $hWnd
    Case $Form1_1
    DllStructSetData($minmaxinfo, 7, 1032) ; min X 1038
    DllStructSetData($minmaxinfo, 8, 776) ; min Y 782
    EndSwitch
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ReduceMem()
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    Return SetError(@error, @extended, $ai_Return[0])
    EndFunc ;==>_ReduceMem

    [/autoit]

    Funktion: Wenn ihr keinen MSSQL Server zur Hand habt müsst Ihr die tmpserver.ini nach %temp% kopieren umm das Suchergebniss zu faken ;)
    Habe auch das Löschen der Datei deaktiviert.

    Ablauf:
    Button # links unten startet Serverabfrage nach Auswahl (Combobox darunter) muss eigentlich einmal gemacht werden aber Ihr habt ja die Datei
    Button # mitte Aktualisiert die Anzeige gemäss Auswahl (Combobox darunter) es ändert sich der Name im linken Grid der wird später der DSN Bezeichner
    Button # rechts Aktualisiert die Anzeige gemäss Auswahl (Combobox darunter) allerdings wird hiermit nur die Ausgabe gefiltert

    Mit Go werden die DSNs in die Registry geschrieben, je nach UAC oder Berechtigung kann man zwischen HKCU /HKLM wählen.


    1. Problem Wenn ich die Liste 10 mal refreshe, lassen sich die Komboboxen nicht mehr bedienen. :( macht man eigentlich nicht ist mir aber aufgefallen und will es korrigieren.
    2. Problem was muss ich tun damit die Resize Funktion die Buttons usw. schöner mitnimmt, bei 1920x1080 sieht das schon etwas doof aus
    3. Der Button "Alles Markieren" will nicht die gesamte Auswahl markieren.

    Also im Prinzip erstmal nur ein paar kleine Macken mal sehen was Ihr noch so findet oder was man besser anders machen kann,
    z.B. das Filtern direkt übers Array zu machen und nicht erneut die Datei einlesen. :)

    Gruß Dietmar :D

  • Nabend
    Stimmt ist nun drin :) Zur Not hätte man sich ja oben im Spoiler bedienen können.
    Aber nun ist es da. mal schauen ob der Kopf heute noch dran ist wenn dich das der eine oder andere Profi hier ansieht. :whistling:
    Habt Erbarmen, bin für gute Tips und Lösungen aber jederzeit zu haben.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    Einmal editiert, zuletzt von Dietmar (14. November 2010 um 20:55)