Mysql Daten abfragen etc.

  • Hallo liebe Gemeinde,

    habe Fragen zu der Thematik mysql und Autoit. Bitte nicht steinigen, das internet ist zwar voll mit informationen aber ich habe so langsam den Überblick verloren.

    Daher meine Fragen.

    Ich suche Befehle mit denen ich einen Insert,einen Select, einen Update Befehl ausführen kann.

    Momentan benutze ich dieses hier.

    [autoit]

    MsgBox(0, '', "Zugriff Methode 3 - alles in ein 2D Array")
    $array = _MySQL_Fetch_Result_StringArray($res)
    _ArrayDisplay($array)

    [/autoit]

    Es funktioniert auch aber ich würde es gerne wo anders anzeigen lassen, gedacht wäre vielleicht wenn möglich in einem GUICtrlCreateGroup Fenster, also primär auf der Form selbst und kein weiteres Popup Fenster.

    Vorgehensweise :

    Es liegen zwei Buttons vor , nach einem Klick soll in dem Groupfenster oder alternativ wo anders, der Inhalt der Datenbank ausgeben werden.

    Mit der Datenbank bin ich verbunden und benutze die libmysql.dll, MySQL.au3 um mich zu verbinden.

    Vielen Dank für eure Unterstützung.

  • danke für deine antwort.

    den großteil des scriptes habe ich ja von dem ersten link von dir.

    Der Zugriff Methode 3 - alles in ein 2d array stammt ja von dort.

    Ich würde wie erwähnt das auf der Form selbst ausgeben und nicht als Popupfenster.

  • hallo hela,

    hier mal ein beispiel zum lesen einer mysql db!

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

    #include <array.au3>
    #include <mysql.au3>

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

    ; db verbindungsvariablen
    $ipadd = "ipadresse" ; server ip
    $sname = "xxx" ; user
    $spasswort = "xxx" ; passwd
    $db = "db_statistiken_daten" ; datenbank

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

    _MySQL_InitLibrary()
    If @error Then Exit MsgBox(0, "Fehler", "libmysql.dll nicht gefunden")

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

    $MysqlConn = _MySQL_Init()

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

    $connected = _MySQL_Real_Connect($MysqlConn,$ipadd,$sname,$spasswort,$db)
    If $connected = 0 Then
    $errno = _MySQL_errno($MysqlConn)
    MsgBox(0,"Fehler","Login Server ist nicht Erreichbar")
    Exit
    Endif

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

    Local $sQuery = "SELECT * FROM `tab_calpday_agent` WHERE AgentID=7001"
    ;MsgBox(0,"",$sQuery)

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

    _MySQL_Real_Query($MysqlConn, $sQuery)

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

    ;$MySQL= "SELECT * FROM `plattenbeobachtung`"
    ; _MySQL_Real_Query($MysqlConn, $MySQL)
    $res = _MySQL_Store_Result($MysqlConn)
    $array = _MySQL_Fetch_Result_StringArray($res)
    _MySQL_Free_Result($res)
    _ArrayDisplay($array)

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

    ; Verbindung beenden
    _MySQL_Close($MysqlConn)
    ; MYSQL beenden
    _MySQL_EndLibrary()

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

    ; schleife durch das array ...

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

    For $i = 0 To UBound($array) - 1
    ; die einzelnen array werte ausgeben
    MsgBox(0,"", $array[$i][0] & " " & $array[$i][1] & " " & $array[$i][2] & " " & $array[$i][3])
    Next

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

    die einzelnen werte z.b. ($array[$i][0]) , kannst du dann an ein textfeld, eine variable oder was auch immer übergeben ...

    hier ein update!

    Spoiler anzeigen
    [autoit]

    Local $sQuery = "UPDATE tab_vorgang SET `UMSATZ isoliert EUR` = '" & _MySQL_Real_Escape_String($MysqlConn,$s_Row_txt_t1[2]) & _
    "',`Stornodatum` = '" & _MySQL_Real_Escape_String($MysqlConn,$s_Row_txt_t1[4]) & _
    "' WHERE `Bu-Nr` = '" & _MySQL_Real_Escape_String($MysqlConn,$s_Row_txt_t1[1]) & "'"

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

    If _MySQL_Real_Query($MysqlConn, $sQuery) Then ; Fehler
    MsgBox(0,"","Fehlernummer: " & _MySQL_Errno($MySQLConn) & @CRLF & _MySQL_Error($MysqlConn))
    EndIf
    If @error <> 0 Then MsgBox(0,"",$x & " / " & $sQuery)

    [/autoit]

    und noch das insert :)

    Spoiler anzeigen
    [autoit]


    Local $sQuery = "INSERT INTO tab_vorgang (`Bu-Nr`,`UMSATZ isoliert EUR`,`DATUM`,`Stornodatum`) " & _
    "VALUES ('" & $s_Row_txt_t1[1] & "',"& _
    "'" & $s_Row_txt_t1[2] & "',"& _
    "'" & $s_Row_txt_t1[3] & "',"& _
    "'" & $s_Row_txt_t1[4] & "')"& _
    " ON DUPLICATE KEY UPDATE "& _
    "`UMSATZ isoliert EUR` = (" & "'" & $s_Row_txt_t1[2] & "'" & ") ," & _
    "`DATUM` = (" & "'" & $s_Row_txt_t1[3] & "'" & ")," & _
    "`Stornodatum` = (" & "'" & $s_Row_txt_t1[4] & "'" & ")"

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

    If _MySQL_Real_Query($MysqlConn, $sQuery) Then ; Fehler
    MsgBox(0,"","Fehlernummer: " & _MySQL_Errno($MySQLConn) & @CRLF & _MySQL_Error($MysqlConn))
    EndIf
    If @error <> 0 Then MsgBox(0,"",$x & " / " & $sQuery)

    [/autoit]

    gruß gmmg

    3 Mal editiert, zuletzt von gmmg (21. März 2012 um 18:50)

  • super vielen dank,

    bin schon etwas weiter,

    stell mich grad etwas dumm, folgendes problem

    habe 4 buttons und ein absende button

    dieses absende button trägt die daten in die datenbank ein.

    Mein Ziel ist es das wenn der User auf einer der ersten 4 Buttons klickt, sich mehrere Inputfenster öffnen und wenn er die ausgefüllt hat kann er sie absenden.

    Nun die Frage, wie merkt der absende Button welcher Button angeklickt war ?

    Also wenn Button 1 dann insert into tabelle 1....

    Wenn Button 2 dann insert into tabelle 2......

    Button 3 dann insert into tabelle 3......

    button 4 dann insert into tabelle 4 ....

    Desweiteren haben diese 4 Buttons unterschiedliche Anzahl von Inputfeldern, ich mache momentan mit GUICtrlSetState(-1, $GUI_HIDE) rum aber er tut sein job nicht wirklich

    Irgentwelche ideen?

    Danke


  • Nun die Frage, wie merkt der absende Button welcher Button angeklickt war ?

    Kanns so machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 403, 297, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 168, 32, 75, 25)
    $Button2 = GUICtrlCreateButton("Button2", 168, 64, 75, 25)
    $Button3 = GUICtrlCreateButton("Button3", 168, 96, 75, 25)
    $Button4 = GUICtrlCreateButton("Button4", 168, 128, 75, 25)
    $absenden = GUICtrlCreateButton("absenden", 168, 192, 75, 25)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $button = 1
    Case $Button2
    $button = 2
    Case $Button3
    $button = 3
    Case $Button4
    $button = 4
    Case $absenden
    MsgBox(0, "", $button)
    EndSwitch
    WEnd

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • vielen dank,

    bin schon dank euch fast fertig,

    zum nächsten problem :)

    ich habe verschiedene Buttons und Inputfelder.

    Nach dem Klick auf ein Button erscheint das entsprechende Inputfenster.

    Sind des ganzen ist, ich würde gerne eine Abfrage machen, der user klickt auf die Felder die er suchen will und schreibt in die Felder wo nach er suchen will

    [autoit]

    Case $su_inven
    $Input1 = GUICtrlCreateInput("Input1", 32, 272, 129, 21)

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

    Case $su_her
    $Input2 = GUICtrlCreateInput("Input2", 168, 272, 129, 21)
    Case $su_mod
    $Input3 = GUICtrlCreateInput("Input3", 304, 272, 121, 21)
    Case $su_os
    $Input4 = GUICtrlCreateInput("Input4", 440, 272, 129, 21)
    Case $su_ser
    $Input5 = GUICtrlCreateInput("Input5", 32, 360, 129, 21)
    Case $su_name
    $Input6 = GUICtrlCreateInput("Input6", 168, 360, 129, 21)
    Case $su_nach
    $Input7 = GUICtrlCreateInput("Input7", 304, 360, 129, 21)
    Case $su_raum
    $Input8 = GUICtrlCreateInput("Input8", 448, 360, 121, 21)
    Case $su_ort
    $Input9 = GUICtrlCreateInput("Input9", 32, 448, 129, 21)
    Case $su_seri
    $Input10 = GUICtrlCreateInput("Input10", 168, 448, 129, 21)
    Case $su_ein
    $Input11 = GUICtrlCreateInput("Input11", 304, 448, 129, 21)
    Case $su_komm
    $Input12 = GUICtrlCreateInput("Input12", 440, 448, 129, 21)
    case $su_su
    $su_input1 = GUICtrlRead($Input1)
    $su_input2 = GUICtrlRead($Input2)
    $su_input3 = GUICtrlRead($Input3)
    $su_input4 = GUICtrlRead($Input4)
    $su_input5 = GUICtrlRead($Input5)
    $su_input6 = GUICtrlRead($Input6)
    $su_input7 = GUICtrlRead($Input7)
    $su_input8 = GUICtrlRead($Input8)
    $su_input9 = GUICtrlRead($Input9)
    $su_input10 = GUICtrlRead($Input10)
    $su_input11 = GUICtrlRead($Input11)
    $su_input12 = GUICtrlRead($Input12)
    $query = "SELECT * FROM XY where Inventarnummer='" & $su_input1 &"' or Hersteller='" & $su_input2 &"' or Modell='" & $su_input3 &"' or Betriebssystem='" & $su_input4 &"' or Servicepack='" & $su_input5 &"' or Name='" & $su_input6 &"' or Vorname='" & $su_input7 &"' or Raum='" & $su_input8 &"' or Ort='" & $su_input9 &"' or Seriennummer='" & $su_input10 &"' or Im Einsatz='" & $su_input11 &"' or Bemerkung='" & $su_input12 &"' "
    _MySQL_Real_Query($MysqlConn, $query)
    $res = _MySQL_Store_Result($MysqlConn)
    $fields = _MySQL_Num_Fields($res)
    $rows = _MySQL_Num_Rows($res)
    $array = _MySQL_Fetch_Result_StringArray($res)
    _ArrayDisplay($array)
    _MySQL_Free_Result($res)

    [/autoit]

    es sollen nicht alle Felder zwingend ausgefüllt werden.

    Beispiel : Ich Klicke den Button Vorname und Name , es öffnen sich zwei Inputfelder, trage die Namen ein und ich bekomme mein Resultat?

    Vielen Dank