Hallo Leute ich hab ein bisschen Probleme und hoffe ihr könnt mir helfen.
Ich möchte in einem kleinen Script Daten aus einer .ini in eine Sqldatenbank übernehmen. An sich kein Problem, nur kenne ich mich nicht so richtig gut mit Sql aus und in AutoIT hab ich jetzt auch noch so meine Problemchen. Ich bekomme es hin Daten aus der Datenbank zu lesen und auch Daten zu schreiben aber leider bekomm ich beim schreiben einen Fehler.
ich benutze die mysql.au3 von cdkid (im Anhang)
und hier mein Script, bitte nicht lachen Das Problem tritt in der Funktion _SQL auf wenn ich die sqlschreiben ausführe. Vielleicht kann mir jemand den Fehler erklären. Schon mal Danke im Vorraus.
AutoIt
;
; AutoIt Version: 3.0
; Language: German
; Author: qwerti
;
; Script Function: ini Dateien einlesen und in eine SQL-Datenbank übertragen
;
;~ #NoTrayIcon
#include<Array.au3>
#include <mysql.au3>
#include <GuiListView.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <GuiToolbar.au3>
#include <ListViewConstants.au3>
#include <ToolbarConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("ini-Daten einlesen", 450, 445, 232, 200)
$Button1 = GUICtrlCreateButton("...", 184, 408, 35, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("in die Datenbank eintragen", 254, 408, 150, 25, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 8, 410, 177, 21)
$List1 = GUICtrlCreateList("", 8, 48, 209, 344)
$List2 = GUICtrlCreateListView("Schlüssel|Wert", 224, 48, 217, 345)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $verzeichniss, $verzeichnisse, $verzeichnisse2, $ini, $tick, $item
; Mysql Server bestimmen
$USER = "test"
$PASS = "wort"
$DB = "ini"
$oSQL = _MySQLConnect($USER, $PASS, $DB, $SERVER)
$kom = "Hr. Mustermann"
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button1
einlesen()
Case $msg = $Button2
sqlschreiben()
Case $msg = $List1
wertesetzen()
EndSelect
WEnd
Func sqlschreiben()
Local $sTable = _SQL('INSERT INTO `projekte` (`BEARBEITER`, `PROJEKT`) VALUES ("Hr. Mustermann","TestProjekt")')
EndFunc ;==>sqlschreiben
Func sqllesen()
local $sTable = _SQL('SELECT `PROJEKT` FROM `projekte` WHERE `BEARBEITER` = "'& $kom &'"')
EndFunc ;==>sqllesen
Func _SQL($SQLCode, $sDelimiter = '|')
$Return = ''
$TableContents = _Query($oSQL, $SQLCode)
With $TableContents
While Not .EOF
For $i = 0 To .Fields.Count - 1
$Return &= $sDelimiter & .Fields($i).value
Next
.MoveNext
WEnd
$Return = StringTrimLeft($Return, 1)
EndWith
Return $Return
EndFunc ;==>_SQL
Func einlesen()
$verzeichniss = FileOpenDialog("Datei wählen", "Y:\", "INI-Datei (*.ini)", 1 + 4)
$verzeichnisse = StringSplit($verzeichniss, "|")
$verzeichniss2 = StringTrimLeft($verzeichniss, StringLen($verzeichnisse[1]) + 1)
GUICtrlSetData($List1, $verzeichniss2)
GUICtrlSetData($Input1, $verzeichnisse[1])
EndFunc ;==>einlesen
Func wertesetzen()
_GUICtrlListView_DeleteAllItems($List2)
$klick = GUICtrlRead($List1)
If $verzeichnisse[0] = 1 Then
$ini = IniReadSection($verzeichnisse[1], "STRIEBELPROJ")
For $s = 1 To $ini[0][0]
GUICtrlCreateListViewItem($ini[$s][0] & '|' & $ini[$s][1], $List2)
Next
Else
$ini = IniReadSection($verzeichnisse[1] & '/' & $klick, "STRIEBELPROJ")
For $s = 1 To $ini[0][0]
GUICtrlCreateListViewItem($ini[$s][0] & '|' & $ini[$s][1], $List2)
Next
EndIf
EndFunc ;==>wertesetzen
Alles anzeigen