1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. HassanMullah

Beiträge von HassanMullah

  • HTML Quelltext nach Stringmuster parsen und in eine Datei schreiben

    • HassanMullah
    • 3. Juni 2013 um 16:18

    Hallo,

    ich muss den Thread nochmals öffnen, da ich die Abfrage etwas erweitern muss.
    Hier nochmals ein Beispielquelltext

    neuer Quelltext
    PHP
    </tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID1350487715331683322635013472094" class="zks_cntlnk_downl">I375S00051 ENT<br/>FirmaA<br/>Bodenbehandlungsanlage</a></td>
    						<td>17.10.2012  17:28:36</td>
    						<td>ENS / ENI375RCR168   </td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID1350642330996918345786918694013" class="zks_cntlnk_downl">I375S00051 ENT<br/>FirmaA<br/>Bodenbehandlungsanlage</a></td>
    						<td>19.10.2012  12:25:31</td>
    						<td>ENS / ENI375RCR168   </td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID13506471929937500251323432454104" class="zks_cntlnk_downl">I375S00051 ENT<br/>FirmaA<br/>Bodenbehandlungsanlage</a></td>
    						<td>19.10.2012  13:46:34</td>
    						<td>ENS / ENI375RCR172   </td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID1350647250822537655534347189580" class="zks_cntlnk_downl">I375S00051 ENT<br/>FirmaA<br/>Bodenbehandlungsanlage</a></td>
    						<td>19.10.2012  13:47:31</td>
    						<td>ENS / ENI375RCR172   </td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID13506473107021780770208607756122" class="zks_cntlnk_downl">I375S00051 ENT<br/>FirmaA<br/>Bodenbehandlungsanlage</a></td>
    						<td>19.10.2012  13:48:31</td>
    						<td>BGS / 101579582354185</td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID13509173780845298174083252006356" class="zks_cntlnk_downl">ASVCMOD019 PROV<br/>Service-Modul</a></td>
    						<td>22.10.2012  16:49:38</td>
    						<td>RQT / 7f000309-c3bd-4</td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID13509176158795432820887193055664" class="zks_cntlnk_downl">ASVCMOD019 PROV<br/>Service-Modul</a></td>
    						<td>22.10.2012  16:53:36</td>
    						<td>RQT / bb576022-ab72-4</td>
    					</tr><tr>
    						<td><a href="/Web/postfach?postfach_action=openDoc&id=zksMID13509935131916155264644490769628" class="zks_cntlnk_downl">I375S00051 ENT<br/>FirmaA<br/>Bodenbehandlungsanlage</a></td>
    						<td>23.10.2012  13:58:33</td>
    						<td>QT / 183825683041081 / REG-FT 15 </td>
    Alles anzeigen


    Ich nehme als Beispiel mal die Zeile 30 und 32. Momentan liest das Script ja ALLE "zksMIDs" aus. Ich brauche jetzt aber die Lösung so, dass wenn z.B. in Zeile 32 ein

    PHP
    <td>QT

    steht, dann soll die zksMID aus Zeile 30 gelesen werden, wenn jedoch dort z.B.

    PHP
    <td>BGS

    steht (siehe Zeile 20), dann soll die Zeile 18 nicht gelesen werden.

    Kann man sowas irgendwie hinbekommen ?

  • Werte in Array prüfen und ändern ?

    • HassanMullah
    • 29. Mai 2013 um 12:33

    misterspeed

    Ich schreibe die Listview mit den "alten" Werten, manipuliere dann und möchte dann "zum Test" die neuen Werte mit _ArrayDisplay ausgeben. So kann ich optisch kurz vergleichen, ob die Lösung zieht.
    Wenn ich z.B. mit

    [autoit]

    _ArrayDisplay($aSQLQueryErgebnis)

    [/autoit]


    mit folgendes Ergebnis
    [Blockierte Grafik: http://www.hasenmueller.de/files4forum/Bild-003-2013-05-29.jpg]
    ausgeben lasse, mit welche Befehl kann ich dann z.B. die rot umrandete Zelle abfragen ?
    Selbst mein Consolewrite fliegt auf die Nase

  • Werte in Array prüfen und ändern ?

    • HassanMullah
    • 29. Mai 2013 um 12:00

    Hallo Schnitzel,

    danke für die schnelle Antwort.

    Hier natürlich auch die Codeschnipsel :)

    [autoit]


    Local $SQLQuery = _MSSQL_Query($sqlCon, "select b.begleitschein_id, b.bgsnr, tr.KUERZEL, t.behoerdliche_nummer, t.NAME, b.RELEVANT, b.DEAKTIVIERT_AM, b.GELOESCHT_AM, b.STORNIERT from begleitschein b left join teilnehmer t on b.teilnehmer_id = t.teilnehmer_id left join teilnehmerrolle tr on t.teilnehmerrolle_id = tr.teilnehmerrolle_id where b.begleitschein_id = " & $Suchbegriff & ";")
    $aSQLQueryErgebnis = $SQLQuery.GetRows; Array wird befüllt
    If Not IsArray($aSQLQueryErgebnis) Then; Prüfung ob Array Daten enthält
    MsgBox(48, 'Information', 'Die Suche enthält keine Daten')
    Else
    For $i = 1 To $Spaltenanzahl ; Spalten der Listview werden mit definierten Spaltennamen bestückt
    _GUICtrlListView_InsertColumn($listview, $i, $aSpaltenNamen[$i], 50)
    Next
    _GUICtrlListView_AddArray($listview, $aSQLQueryErgebnis); Inhalt des Array wird unterhalb der Spaltennamen in die Listview eingetragen
    _ArrayDisplay($aSQLQueryErgebnis[6]); Testeintrag: hier fliegt das Script auf die Schnauze mit "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:"
    If $aSQLQueryErgebnis[6] = 0 Then; Prüfung ob Relevant/Aktiv 0 oder 1 ist
    $aSQLQueryErgebnis[6] = "NEIN"
    Else
    $aSQLQueryErgebnis[6] = "JA"
    EndIf

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

    _ArrayDisplay($aSQLQueryErgebnis, "Das Ergebnis im Array","","","","","INDEX|" & $TabelleBGS); nur als Testausgabe gedacht

    [/autoit]


    Was mache ich denn in Zeile 10 falsch, das es mir das Script mit "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:" wegfliegt ?

  • Werte in Array prüfen und ändern ?

    • HassanMullah
    • 29. Mai 2013 um 11:29

    Hallo,

    in meinem Array stehen folgende Informationen

    [Blockierte Grafik: http://www.hasenmueller.de/files4forum/Bild-002-2013-05-29.jpg]

    Ich möchte jetzt gerne, bevor das Array die Listview befüllt, das Array abfragen.
    Am konkreten Beispiel.

    AKTIV: kann 0 oder 1 sein, wenn 1 dann ersetzen mit dem Wort "JA", wenn 0 dann "NEIN"
    DEAKTIVIERT: wenn NULL dann ersetzen mit dem Wort "NEIN", wenn ein Wert vorhanden, dann "JA"

    Wie prüfe und manipuliere ich das Array ?

    Danke

  • _MSSQL_Query von der UDF MSSQL.au3 (von TheLuBu) liefert kein Ergebnis

    • HassanMullah
    • 28. Mai 2013 um 16:18

    Ich glaube eine Lösung gefunden zu haben, zumindest erhalte ich ein Ergebnis

    [autoit]


    Global $BGSTest = _MSSQL_Query($sqlCon, "select b.bgsnr as Begleitscheinnummer, b.begleitschein_id as BegleitscheinID, t.behoerdliche_nummer as BehördlicheNummer, t.NAME as Firmenname, tr.KUERZEL as Rolle from begleitschein b left join teilnehmer t on b.teilnehmer_id = t.teilnehmer_id left join teilnehmerrolle tr on t.teilnehmerrolle_id = tr.teilnehmerrolle_id where b.bgsnr = '19313300026234';")
    $array = $BGSTest.GetRows
    If Not IsArray($array) Then
    MsgBox(0, 'Array', 'kein Ergebnis')
    Exit
    EndIf
    _ArrayDisplay($array, 'Alle Spalten',"","","","","1|2|3|4|5|6|7|8|9|10")

    [/autoit]
  • _MSSQL_Query von der UDF MSSQL.au3 (von TheLuBu) liefert kein Ergebnis

    • HassanMullah
    • 28. Mai 2013 um 15:18

    Servus,

    ich bin gerade dabei mein bisheriges Script auf die UDF MSSQL.au3 von TheLuBu umzubauen.

    Der Connect zu den unterschiedlichen DB's geht schon sauber, jedoch bekomme ich bei der Funktion _MSSQL_Query kein Ergebnis zurück.

    Bisher sah das bei mir so aus

    alte Funktion SQL
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <MSSQL.au3>
    #include <Array.au3>

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

    $rs = ObjCreate("ADODB.RecordSet")
    ; ein paar andere Zeilen
    SQL("*", "BEGLEITSCHEIN", "BEGLEITSCHEIN_ID", $Suchbegriff)
    ; ein paar andere Zeilen
    If $rs.RecordCount Then
    Local $Clipboard = ""
    While Not $rs.EOF
    Local $BGSNR = $rs.Fields("BGSNR").value
    Local $BEGLEITSCHEIN_ID = $rs.Fields("BEGLEITSCHEIN_ID").value
    Local $BEARBEITUNGSST = $rs.Fields("BEARBEITUNGSST").value
    ; ein paar andere Zeilen
    Local $Reihe = GUICtrlCreateListViewItem($BGSNR & "|" & $BEGLEITSCHEIN_ID, $listview)
    $rs.MoveNext
    WEnd
    EndIf

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

    Func SQL($SelectStar, $FromWhat, $WhereWhat, $Suchbegriff)
    $SQLErgebnis = $rs.Open("SELECT " & $SelectStar & " FROM " & $FromWhat & " where " & $WhereWhat & " ='" & $Suchbegriff & "';", $sqlCon)
    ConsoleWrite("SELECT " & $SelectStar & " FROM " & $FromWhat & " where " & $WhereWhat & " ='" & $Suchbegriff & "';" & @CRLF)
    Return $SQLErgebnis
    EndFunc ;==>SQL

    [/autoit]


    hiermit wird die Listview bestückt.

    Jetzt will ich das Ganze mit der

    Funktion _MSSQL_Query
    [autoit]


    ;===============================================================================
    ;
    ; Function Name....: _MSSQL_Query
    ; Description......: Send a Query to the Database
    ; Syntax...........: _MSSQL_Query($iSQLCon, $iQuery)
    ; Parameter(s).....: $iSQLCon = $oConnectionObj = Object, returned by _MSSQL_Con
    ; $iQuery = MSSQL Query
    ; Return Value(s)..: Success - Returns the Response from the server
    ;
    ;===============================================================================
    Func _MSSQL_Query($iSQLCon, $iQuery)
    If IsObj($iSQLCon) Then
    Return $iSQLCon.execute($iQuery)
    EndIf
    EndFunc ;==>_MSSQL_Query

    [/autoit]


    behandeln, aber irgenwie komme ich nicht weiter

    [autoit]


    Local $BGSTest = _MSSQL_Query($sqlCon, "SELECT * FROM BEGLEITSCHEIN where BEGLEITSCHEIN_ID ='123';")
    ConsoleWrite("$BGSTest = " & $BGSTest & @CRLF)
    _ArrayDisplay($BGSTest, "Mein BGS", Default, 1)

    [/autoit]

    Beim Consolewrite bekomme ich "$BGSTest = " raus, also nix ?(

    Der einzige Unterschied, der mir bisher aufgefallen ist, ist das ich in der alten Funktion einen $rs.open Aufruf hatte und in der _MSSQL_Query ein $iSQLCon.execute($iQuery) verwendet wird. Hat das damit eventuell was zu tun, oder behandle ich das Array falsch ?

    Gruss und Danke

  • Variable "variabel" machen

    • HassanMullah
    • 21. Mai 2013 um 12:34

    Hallo,

    erst mal vielen Dank für die Beispiele. Da ich das Programmieren nie gelernt habe, sondern mir das soweit mit Learning by Doing selbst beigebracht habe, bitte ich mal alle im Forum vorab um Verzeichung, wenn es den Eindruck machen würde, als ob hier ein langjähriger Hase am Werk ist. Ich bin vielleicht schon einige Zeit mit Autoit vertraut, was aber nicht heißt, das ich mich einmal durch die Hilfe programmiert habe. Vielleicht hat ein Array einige Code Zeilen weniger, aber für mein Verständnis sind manchmal ein paar Schritte mehr leichter. Vielleicht kapier ich das mit den Arrays auch irgendwann mal :)

    So, jetzt werde ich mal versuchen, die Beispiele umzusetzen.

    Danke nochmals

  • Listview (Tabelle) vs. Formular (Labels + Inputs) in 2 TabControlls

    • HassanMullah
    • 17. Mai 2013 um 16:56

    Hi YaeroxXO,

    OK, das Prinzip könnte ich verstehen, aber ich denke nicht, das es mein Problem löst. Ich bekomme die Listview immer auf beiden Tabs dargestellt, ich will Sie aber nur unter dem 1. Tab sehen. Wenn ich den 2. Tab anklicke, erwarte ich (so denke ich zumindest) ein leere Controllfenster. Ich bin ich hier auf dem Holzweg ?

    So, dann mal schöne Pfingsten, wir hören am Dienstag wieder voneinader

  • Variable "variabel" machen

    • HassanMullah
    • 17. Mai 2013 um 16:52

    Also ich habe jetzt mal so umgebaut

    [autoit]


    $oDict = ObjCreate("Scripting.Dictionary")
    For $i = 1 To $Spaltenanzahl
    $oDict("Spalte") = $i
    ConsoleWrite("Spalte" & $oDict("Spalte") & @CRLF)
    _GUICtrlListView_InsertColumn($listview, $i, $oDict("Spalte"), 50)
    Next

    [/autoit]


    Jetzt heißen die Spalten nur noch 1,2,3 usw. was ja auch logisch ist, da ich nicht wie in der Consolenansicht noch ein "Spalte" davor habe.
    Ich will ja aber das die eigentlichen Variablen, welche ich unter

    [autoit]


    Local $Spalte1 = "NACHWEIS NR"
    Local $Spalte2 = "NACHWEIS ID"
    Local $Spalte3 = "VORLÄUFIGE NR"
    ;....
    Local $Spaltenanzahl = 15

    [/autoit]


    definiert habe, ausgelesen werden.

    Könnte mir bitte mal jemand ein Beispiel geben, wie man das mit einem Array abbildet.
    Danke!

  • Listview (Tabelle) vs. Formular (Labels + Inputs) in 2 TabControlls

    • HassanMullah
    • 17. Mai 2013 um 16:29

    Hi m-obi,

    da habe ich wohl den 2. Parameter elegant ausgeblendet :)

    Habe jetzt mal folgendermaßen umgebaut:

    [autoit]


    $MainGUI = GUICreate("Meine GUI" & $Version, $GUIWidth, $GUIHeight, Default, Default); Starte HauptGUI
    ;...
    $MainGUITab = GUICtrlCreateTab(10, 90, $GUIWidth - 20, 670)
    $MainGUITabTabelle = GUICtrlCreateTabItem("Tabelle")
    ;~ $listview = GUICtrlCreateListView("", 10, 110, $GUIWidth - 23, 648);,$LVS_SORTDESCENDING)
    $listview = _GUICtrlListView_Create($MainGUI, "", 10, 110, $GUIWidth - 23, 648)
    $MainGUITabDetails = GUICtrlCreateTabItem("Details")
    GUICtrlCreateTabItem(""); Beendet die Tab Definition
    GUICtrlSetState($MainGUITabTabelle, $GUI_SHOW) ; Tabelle erscheint zuerst

    [/autoit]


    und in Function sieht es dann so aus:

    [autoit]


    GUISwitch($MainGUI,$MainGUITabTabelle)
    For $i = 1 To $Spaltenanzahl
    ConsoleWrite ("Variable i = " & $i & @CRLF)
    Local $SpalteX = "$Spalte" & $i
    ConsoleWrite ("$SpalteX = " & $SpalteX & @CRLF)
    _GUICtrlListView_InsertColumn($listview, $i, $SpalteX, 50)
    Next

    [/autoit]


    Leider scheint das keinerlei Auswirkung zu haben. Ich sehe die Listview sowohl im Tab "Tabelle" als auch im Tab "Details".
    Irgendwie hänge ich jetzt voll ?(

  • Variable "variabel" machen

    • HassanMullah
    • 17. Mai 2013 um 15:27

    Hi zusammen,

    sorry für die bescheuerte Überschrift, aber besseres fällt mir dazu gerade nicht ein.

    Folgendes kleines Problem (Beispiel)

    [autoit]


    Local $Spalte1 = "NACHWEIS NR"
    Local $Spalte2 = "NACHWEIS ID"
    Local $Spalte3 = "VORLÄUFIGE NR"
    ;....
    Local $Spaltenanzahl = 15

    [/autoit]

    Jetzt möchte ich gerne die Variablen $Spalte1, $Spalte2, $Spalte3 in einer For Schleife variable machen, d.h. den Namen der Variablen

    [autoit]


    For $i = 1 To $Spaltenanzahl
    ConsoleWrite ("Variable i = " & $i & @CRLF)
    Local $SpalteX = "$Spalte" & $i
    ConsoleWrite ("$SpalteX = " & $SpalteX & @CRLF)
    _GUICtrlListView_InsertColumn($listview, $i, $SpalteX, 50)
    Next

    [/autoit]

    Ausgabe in der Console:

    Code
    Variable i = 1
    $SpalteX = $Spalte1
    Variable i = 2
    $SpalteX = $Spalte2
    Variable i = 3
    $SpalteX = $Spalte3
    Variable i = 4
    $SpalteX = $Spalte4
    Variable i = 5
    $SpalteX = $Spalte5
    Variable i = 6
    $SpalteX = $Spalte6
    Variable i = 7
    $SpalteX = $Spalte7
    Variable i = 8
    $SpalteX = $Spalte8
    Variable i = 9
    $SpalteX = $Spalte9
    Variable i = 10
    $SpalteX = $Spalte10
    Variable i = 11
    $SpalteX = $Spalte11
    Variable i = 12
    $SpalteX = $Spalte12
    Alles anzeigen

    Leider heißen dann meine Spaltennamen nicht "NACHWEIS NR" oder "NACHWEIS ID", sondern "$Spalte1" und "$Spalte2", d.h. die Es wird der Variablenname und nicht der Variablenwert genommen

    Irgend eine Idee ?

  • Listview (Tabelle) vs. Formular (Labels + Inputs) in 2 TabControlls

    • HassanMullah
    • 17. Mai 2013 um 12:33

    Ich habe doch nur eine GUI erstellt ?(

  • Listview (Tabelle) vs. Formular (Labels + Inputs) in 2 TabControlls

    • HassanMullah
    • 17. Mai 2013 um 11:08

    Guten Morgen,

    einen Teil der Anfrage hatte ich schon in einem anderen Thread, jedoch gehört die Anfrage auf Grund der Überschrift da eigentlich nicht wirklich hin, weshalb ich mal eine neue Anfrage zu diesem Thema starte.

    Kurze Vorgeschichte. Habe mir ein GUI gebaut, mit der ich diverse Datenbanken abfragen kann. Da das Ergebnis jedoch oft so viele Spalten hat, bzw. die Spaltenbreite groß sein kann, kommt schnell die horizontale Scrollbar zu Gesicht. Aus diesem Grund wollte ich folgende Lösung bauen. Ein TabControl mit 2 Tabs. Tab1 (linker Tab) soll "Tabelle" heißen, Tab2 (rechter Tab) soll "Details" heißen.

    [autoit]

    $MainGUITab = GUICtrlCreateTab(10, 90, $GUIWidth - 20, 670)
    $MainGUITabTabelle = GUICtrlCreateTabItem("Tabelle")
    $MainGUITabDetails = GUICtrlCreateTabItem("Details")
    GUICtrlCreateTabItem(""); Beendet die Tab Definition
    GUICtrlSetState($MainGUITabTabelle, $GUI_SHOW) ; Tabelle erscheint zuerst

    [/autoit]

    Unter "Tabelle" lasse ich nur noch die ganz wichtigen Dinge optisch erscheinen, sodass alles auf eine Seite passt (ohne Scrollbar)

    Jetzt wird ein TabControl (sorry bin damit noch neu unterwegs) soweit ich weiß so aufgebaut.

    1. GUI
    2. erster Tab
    3. Inhalt unterhalb erster Tab
    4. zweiter Tab
    5. Inhalt unterhalb zweiter Tab
    6. Endtab

    Mein Problem ist jedoch, das ich erst die TabControls ohne Inhalt erzeuge. Dann kommt meine SQL Abfrage. Das Ergebnis wird dann als Listview erzeugt. Da ich

    [autoit]

    $MainGUITabTabelle

    [/autoit]

    zuerst erscheinen lasse, sieht das augenscheinlich auch so aus, als ob die Listview unter "Tabelle" erscheint. Wenn ich jedoch auf den Tab "Details" gehe, sehe ich die Listview auch, was ich nicht möchte.

    Außerdem zerstöre ich die Listview immer vor dem Neuaufbau. Grund dafür steht ab hier

    [autoit]

    _GUICtrlListView_Destroy($listview)
    $listview = GUICtrlCreateListView("", 10, 110, $GUIWidth - 23, 648);,$LVS_SORTDESCENDING)

    [/autoit]

    Ziel sollte sein, das die Listview nur im linken Tab erscheint. Kann ich das nicht irgendwie über

    [autoit]

    $MainGUITabTabelle

    [/autoit]

    zuordnen lassen ? Wenn ich dann eine Zeile markiere, würde ich eine 2 SQL Abfrage abfeuern, welche auf Grund der markierten ID mir ein detailiertes Ergebnis im rechten Tab unter "Details" liefern soll. Hier würde ich das dann mit Labels und InputControls verwirklichen.

    Könnt Ihr mir hier ein wenig auf die Sprünge helfen, wie ich die Zuteilung zum jeweiligen Tab hinbekomme.

    Danke

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 17. Mai 2013 um 10:41

    Ich verlege mal die Anfrage wegen der TabControls in einen extra Thread, da man bei der Überschrift sicherlich nicht diese weitere Anfrage erwartet.

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 16. Mai 2013 um 08:02

    Guten morgen zusammen,

    ich glaube die Ansätze von misterspeed könnten hier passen. Das Beispiel (ich in der Hilfe) sieht ja den Aufbau folgendermaßen vor.

    1. GUI
    2. erster Tab
    3. Inhalt erster Tab
    4. zweiter Tab
    5. Inhalt zweiter Tab
    6. Endtab

    Ich lasse aber 2 leere Tabs erzeugen, und möchte dann im zweiten Schritt auf Tab 1 die "Tabelle" anzeigen und wenn ich eine Zeile markiere einen zweiten Select durchführen, welcher mit dann in der "Detail" Ansicht auf dem 2. Tab dargestellt wird.

    Vielleicht hat mir da jemand auch ein kleines Beispiel, damit der Groschen fällt :)

    Danke

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 14. Mai 2013 um 16:34

    Ok, hier kommt Sie schon, die weitere Frage :)

    Ich habe jetzt ein TabControll mit 2 Tabs erstellt. Einer mit dem Namen "Tabelle" der andere zweite Tab mit dem Namen "Details". "Tabelle" steht im Focus.
    Wenn ich jetzt die Listview auf "Tabelle" erzeugen lasse ist alles OK, jedoch sehe ich die Listview auch, wenn ich "Details" drücke.

    Wie kann ich die Listview dem Tab "Tabelle" fest zuweisen ?

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 14. Mai 2013 um 14:21

    Jetzt schaut's doch gleich viel besser aus. Da bekomme ich Werte, mit denen ich weiter machen kann. Aber es werden bestimmt noch Fragen kommen :)

    Danke!

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 14. Mai 2013 um 14:05

    Servus TheLuBu

    erst mal vielen Dank. Ich habe jetzt mal mit WM_Notifiy herumgespielt. Da wird man ja in der Console förmlich erschlagen. Aus diesem Grund habe ich mal alle die auskommentiert, die mich aktuell nicht interessieren. Das sieht jetzt so aus:

    Meine modifizierte WM_Notify
    [autoit]

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $NM_CLICK, $NM_DBLCLK, $NM_KILLFOCUS, $NM_RCLICK, $NM_RDBLCLK, $NM_RETURN, $NM_SETFOCUS
    $hWndListView = $listview
    If Not IsHWnd($listview) Then $hWndListView = GUICtrlGetHandle($listview)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    ;~ Case $LVN_COLUMNCLICK ; Es wurde auf eine Spalte geklickt
    ;~ $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    ;~ _DebugPrint("$LVN_COLUMNCLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ; Kein Rückgabewert
    ;~ Case $LVN_DELETEITEM ; Ein Item soll gelöscht werden
    ;~ $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    ;~ _DebugPrint("$LVN_DELETEITEM" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ; Kein Rückgabewert
    ;~ Case $LVN_HOTTRACK ; Wird von einem ListView gesendet, wenn der Benutzer die Maus über ein Item bewegt
    ;~ $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    ;~ _DebugPrint("$LVN_HOTTRACK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ;~ Return 0 ; Erlaubt dem ListView, seine normale "Verfolgen und Auswählen"-Operation durchzuführen
    ;Return 1 ; Das Item wird nicht ausgewählt
    ;~ Case $LVN_KEYDOWN ; Eine Taste wurde gedrückt
    ;~ $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    ;~ _DebugPrint("$LVN_KEYDOWN" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->VKey:" & @TAB & DllStructGetData($tInfo, "VKey") & @LF & _
    ;~ "-->Flags:" & @TAB & DllStructGetData($tInfo, "Flags"))
    ; Kein Rückgabewert
    Case $NM_CLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste anklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_CLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    CheckPosOnListView()
    ; Kein Rückgabewert
    ;~ Case $NM_DBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste doppelklickt
    ;~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_DBLCLK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    ;~ Case $NM_KILLFOCUS ; Das Control hat den Eingabefokus verloren
    ;~ _DebugPrint("$NM_KILLFOCUS" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    ;~ Case $NM_RCLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste anklickt
    ;~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_RCLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ;Return 1 ; Verhindert die weitere Standard-Nachrichtenbehandlung
    ;~ Return 0 ; Erlaubt die weitere Standard-Nachrichtenbehandlung
    ;~ Case $NM_RDBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste doppelklickt
    ;~ $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_RDBLCLK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    ;~ Case $NM_RETURN ; Das Control hat den Eingabefokus und der Benutzer hat die ENTER-Taste gedrückt
    ;~ _DebugPrint("$NM_RETURN" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    ;~ Case $NM_SETFOCUS ; Das Control hat den Eingabefokus erhalten
    ;~ _DebugPrint("$NM_SETFOCUS" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]


    Leider ist es so, das ich bisher nur Ausgabe in der Console bekomme habe, wenn ich auf die Spaltenname geklickt hatte. Eigentlich erwarte ich jetzt beim linken Mausklick auf die erste oder zweite Zeile eine Reaktion in der Console, aber da passiert nix ;(

    Die Funktion CheckPosOnListView() ist hier

    [autoit]

    Func CheckPosOnListView()
    $mark = _GUICtrlListView_GetSelectionMark(GUICtrlGetHandle($listview))
    ConsoleWrite("$mark = " & $mark & @CRLF)
    $erste_spalte = _GUICtrlListView_GetItemText(GUICtrlGetHandle($listview), $mark, 0)
    ConsoleWrite("$erste_spalte = " & $erste_spalte & @CRLF)
    $zweite_spalte = _GUICtrlListView_GetItemText(GUICtrlGetHandle($listview), $mark, 1)
    ConsoleWrite("$zweite_spalte = " & $zweite_spalte & @CRLF)
    $dritte_spalte = _GUICtrlListView_GetItemText(GUICtrlGetHandle($listview), $mark, 2)
    ConsoleWrite("$dritte_spalte = " & $dritte_spalte & @CRLF)
    EndFunc ;==>CheckPosOnListView

    [/autoit]


    Was mache ich hier falsch ? Bei den ersten Starts wurden auch ganz viele Variablen als nicht deklariert angemeckert. Die habe ich dann in der Funktion WM_Notify als Local nachdeklariert. Da meine Listview die Variable

    [autoit]

    $listview

    [/autoit]

    hat, habe ich das ab Zeile 4 der Funktion auch angepasst. Sorry ich finde die Funktion echt heftig, da steig ich leider nicht wirklich durch.

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 14. Mai 2013 um 12:40

    Hallo,

    so nachdem ich meine GUI um einige SQL Statements erweitert habe, komme ich an ein neues Problem, welches ich gerne im Vorfeld mal besprechen würde.
    Als momentanes Ergebnis bekomme ich eine ListView mit z.B. 4 Zeilen aufgebaut. Da ich jedoch einige Werte ausgeben lasse, ist die Bildschirmbreite recht schnell erreicht, sodass sich der Scrollbalken aktiviert.

    Jetzt kam mir folgende Idee.

    Ich baue mir dort wo ich bisher die Listview aufgebaut habe ein Tab Controll mit z.B. 2 Tabulatoren (wie das geht muss ich noch schauen, habe damit noch nie was gemacht, aber das wir schon nicht so schwierig sein).
    Auf dem ersten Tab möchte ich dann die Listview in einer abspeckten Version ausgeben.

    Gehen wir mal davon aus, das mein

    SQL
    SELECT * FROM NACHWEIS where NACHWEISNR = '1234';

    als Ergebnis die Tabellennamen NACHWEISNR, NACHWEIS_ID, MENGE und DATUM ausgibt (natürlich viel mehr, nur so als Beispiel), könnte es jedoch sein, das die NACHWEISNR 1234 in der Datenbank öfter vorkommt, jedoch die NACHWEIS_ID immer eindeutig ist. Es wird jetzt z.B. eine Listview aufgebaut mit 4 Zeilen.

    Pro Zeile lasse ich nur die "wichtigsten" Dinge optisch erscheinen, damit der Scrollbalken erst gar nicht benötigt wird.

    So und jetzt kommt mein Problem :)

    Ich würde jetzt gerne mit der Maus eine Listviewzeile anklicken (also irgendeine von den 4 Zeilen), dann sollte im Hintergrund nochmals ein

    SQL
    SELECT * FROM NACHWEIS where NACHWEIS_ID = 4711;

    stattfinden, wobei die NACHWEIS_ID hier auch "irgendwie" dynamisch ausgelesen werden müsste. Und das "große Ergebnis" von diesem SELECT möchte ich dann mit Labels und Inputfelder sauber aufgeteilt im zweiten Tab darstellen, also eine Arte Detailansicht

    BTW: Gibt es eigentlich eine einfache und elegante Methode Labels und Inputfelder sauber anzuordnen, d.h. das Sie senkrecht und waagerecht über eine Logik sauber stehen. Momentan ist das bei mir noch ganz viel versuchen und testen, bis es halt sauber aussieht.

    Vorab schon mal Danke, ich werde jetzt mal loslegen und schauen wie weit ich komme.

    Gruss Hassan

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • HassanMullah
    • 8. Mai 2013 um 17:04

    misterspeed: Danke !!!!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™