Jump to content

Recommended Posts

Posted

Hi, I have been using and old version of autoit for several years (3.2.4.9) and finally decided to upgrade to (3.3.14.5).  I am having an issue with advancing listview items.  I have included orausers.au3the code that I'm having issues with.  It must be a compatibility issue because it does work in the old version.  I have attached screen shots of the output with the old and new version.  The code snippet below is where my issue is.  Any help would be appreciated.

Func pullInfo($mySearch)
    dim $lineNum [3000]
    $mySearch = "%"&$mySearch&"%"
    $runSQL = "select v$session.sql_id, sid, SERIAL#, username, osuser, to_char(logon_time,'mm/dd/yyyy HH:MI PM') logon_time, status, machine, program, sql_text from v$session, v$sql where type <> 'BACKGROUND' and upper (osuser) like '"&$mySearch&"' and v$session.sql_id = v$sql.sql_id(+)"
    $runSQL = $runSQL & " order by "&$mySort
    With $adors
            .ActiveConnection = $adoCon
            .LockType = $adLockOptimistic ; Set ODBC connection read only
        .CursorType = $adOpenkeyset
        .Source = $runSQL
            .Open
            If @error then
                msgbox (0,"","Error running SQL in pullInfo " & $runSQL)
                exit
            Endif
    EndWith
    $totrecs = $adors.recordcount
    $j = 0
    $FieldNames = ""
    $FieldView = ""
    if $adors.EOF then
        msgbox(0,"EOF","No records found")
    else
        While not $adors.EOF
            For $i = 0 To $adors.Fields.Count - 1
                $FieldView = $FieldView & $adors.Fields( $i ).Value & "|"
            if $j = 0 then
                $FieldNames = $FieldNames & $adors.Fields($i).Name & "|"
            endif
            Next
            if GUICtrlGetState($tblListView) = -1 then
                $tblListView = GuiCtrlCreateListView($FieldNames, 30, 60, 950, 600,$LVS_SHOWSELALWAYS,$LVS_EX_GRIDLINES)
                _GUICtrlListView_SetColumnWidth ( $tblListView, 0, 0 )
            endif
            $lineNum[$j] = GuiCtrlCreateListViewItem($FieldView, $tblListView)
            GuiCtrlSetState(-1,$GUI_DROPACCEPTED)
            $FieldView = ""
            $j = $j + 1
            $adors.MoveNext
        WEnd
        GUICtrlSendMsg($tblListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT,$LVS_EX_FULLROWSELECT)
        _GUICtrlListView_SetColumnWidth($tblListView,0,$LVSCW_AUTOSIZE)
        _GUICtrlListView_HideColumn ( $tblListView, 0 )
    endif
    $adors.close
EndFunc
 

autoit_issue.docxFetching info...

Posted (edited)

To get you started in the right direction...

I would suggest installing and using the full version of Scite4AutoIt3, if you haven't already, and getting familiar with Au3Check (CTRL+F5).  If you had run Au3Check against your script, you would have seen that the following 2 functions do not exist:

"C:\Projects\...\a3_temp.au3"(90,58) : error: _GUICtrlListView_GetCurSel(): undefined function.
                $y = _GUICtrlListView_GetCurSel($tblListView)
~~~~~~~~    ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Projects\...\a3_temp.au3"(267,58) : error: _GUICtrlListView_SetItemSelState(): undefined function.
    _GUICtrlListView_SetItemSelState($List_View, $i_index, 1)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

Look in the help file to find what current functions provide the same functionality as the old ones.  You can start by looking at the following functions:

_GUICtrlListView_GetSelectedIndices
or
GUICtrlRead

And

_GUICtrlListView_SetItemSelected

 

You can also look at the following links for things that have changed since v3.2.4.9:

Release History

Script-Breaking Changes

Edited by TheXman
Added Scite4AutoIt3 link
Posted

I propose to use ADO.au3 UDF

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted

Thanks for the replies.  I have figured out what my issue was.  The GUICtrlGetState($tblListView) does not change when there are values in the listview in this version of autoit.  I changed this to check for the first iteration and it fixed the issue.

Thanks again for your quick help. 

 

     if GUICtrlGetState($tblListView) = -1 then
                $tblListView = GuiCtrlCreateListView($FieldNames, 30, 60, 950, 600,$LVS_SHOWSELALWAYS,$LVS_EX_GRIDLINES)
                _GUICtrlListView_SetColumnWidth ( $tblListView, 0, 0 )
    endif

Changed to 

            if $j = 0 then
                $tblListView = GuiCtrlCreateListView($FieldNames, 30, 60, 950, 600,$LVS_SHOWSELALWAYS,$LVS_EX_GRIDLINES)
                _GUICtrlListView_SetColumnWidth ( $tblListView, 0, 0 )
            endif

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...