Frage zu ListView + Access Query

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

fef
Posts: 1
Joined: 22 Apr 2016, 03:41

Frage zu ListView + Access Query

26 Jan 2017, 09:26

Hallo

Ich benutze eine MS-Access Datenbank un möchte gerne dass das Resultat einer Abfrage (SQL-Query) in einem einfachen Fenster angezeigt wird.
Das Resultat sollte in Form eines Fenster mit der Funktion ListView angezeigt werden.
Ungefähr so wie hier: https://ahkde.github.io/docs/commands/L ... .htm#Intro


Um Access aufzurufen will ich diesen Code hier benützen. Weiss aber irdendwie nicht weiter wie ich das Resultat der Query mit ListView verbinde ... :think: :

Code: Select all

conn := ComObjCreate("ADODB.Connection")
conn.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=G:\apps\COMMERCI\DBASE\GENERAL\Agent.mdb;")
rs := conn.Execute("SELECT Agent.Agent, Agent.Nom FROM Agent WHERE (((Agent.Nom) Like "*feyde*"));")

????? <- hier müste die ListView ja dann kommen...

rs.Close(), rs := ""
conn.Close(), conn := ""
10.jpg
10.jpg (75.95 KiB) Viewed 2123 times
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Frage zu ListView + Access Query

26 Jan 2017, 10:27

Auf die Inhalte eines RecordSet Objektes kann man mit der Funktion getRows zugreifen:
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Danach muss du nur noch für jede Zeile einmal LV_Add ausführen um die Zeile der ListView hinzuzufügen:

Code: Select all

rows := rs.getRows()
Loop % rows.1.MaxIndex() ;hole dir die Anzahl der Zeilen
	LV_Add( "", row.1[A_Index], row.2[A_Index]... )
Leider ist das ganze blöd sortiert ( zuerst die Spalten dann die Zeilen ) also muss man ein bisschen umsortieren.
Natürlich musst du die ListView erstmal erzeugen bevor du LV_Add verwendest.
Recommends AHK Studio
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Frage zu ListView + Access Query

26 Jan 2017, 12:12

Mit etwas Glück (nicht getestet):

Code: Select all

#NoEnv
conn := ComObjCreate("ADODB.Connection")
conn.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=G:\apps\COMMERCI\DBASE\GENERAL\Agent.mdb;")
rs := conn.Execute("SELECT Agent.Agent, Agent.Nom FROM Agent WHERE (((Agent.Nom) Like "*feyde*"));")
; --------------------------------------------------------------------------------------------------
Gui, Add, ListView, w800 r20 +Grid
Fields := rs.Fields
Columns := rs.Count
Loop % Columns ; Header
   LV_InsertCol(A_Index, , Fields.Item(A_Index - 1).Name)
While !(rs.EOF) { ; Rows
   Row := []
   Row.SetCapacity(Columns)
   Loop % Columns
      Row[A_Index] := Fields.Item(A_Index - 1).Value
   LV_Add("", Row*)
   rs.MoveNext()
}
Loop, % LV_GetCount("Column")
   LV_ModifyCol(A_Index, "AutoHdr")
; --------------------------------------------------------------------------------------------------
rs.Close(), rs := ""
conn.Close(), conn := ""
; --------------------------------------------------------------------------------------------------
Gui, Show, , Ergebnis
Return
GuiClose:
ExitApp
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Frage zu ListView + Access Query

14 Nov 2018, 09:34

Weil ich es gerade selbst gebraucht habe:

Columns := rs.Count -> Columns := rs.Fields.Count
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 21 guests