Jump to content

EzMySqll.au3 Compiled error


Go to solution Solved by 20Ice18,

Recommended Posts

I am encountering a perplexing issue while running a script, and I would appreciate your insights and assistance in resolving it. Here's a brief description of the problem:

When I execute the script within the AutoIt environment, it runs smoothly without any errors or problems. However, when I compile the script into an executable and attempt to run it, an error occurs stating, "Variable used without being declared." I have made diligent efforts to identify the undeclared variable, but unfortunately, I have been unsuccessful in locating it.

I have reviewed EzMySqll.au3 UDF  made by @Yoriz thoroughly, and declared  all undeclared  variables now they all appear to be appropriately declared before usage.

 

Global $str_db_host, $str_db_user, $str_db_password, $str_database

Func data_computers_insert()
    Local $serialNumber
    Local $computerName
    Local $submissionDate
    Local $sqlQuery

    ; Start the MySQL connection
    _EzMySql_Startup()

    ; Open the connection to the database
    _EzMySql_Open($str_db_host, $str_db_user, $str_db_password, $str_database, "3306")
    If @error Then
        MsgBox(16, "Error", "Failed to open the MySQL connection.")
        Return
    EndIf

    ; Set the values for the computer
    $serialNumber = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "SystemProductName")
    If @error Then
        MsgBox(16, "Error", "Failed to read the serial number from the registry.")
        _EzMySql_Close()
        _EzMySql_ShutDown()
        Return
    EndIf

    $computerName = @ComputerName
    $submissionDate = @YEAR & "-" & @MON & "-" & @MDAY

    ; Build the SQL query
    $sqlQuery = "INSERT INTO Computers (SerialNumber, ComputerName, SubmissionDate) VALUES ('" & $serialNumber & "', '" & $computerName & "', '" & $submissionDate & "')"

    ; Display the SQL query in the console
    ConsoleWrite("SQL Query: " & $sqlQuery & @CRLF)

    ; Execute the query
    _EzMySql_Exec($sqlQuery)
    If @error Then
        MsgBox(16, "Error", "Failed to execute the SQL query.")
        _EzMySql_Close()
        _EzMySql_ShutDown()
        Return
    EndIf

    _EzMySql_Close()
    _EzMySql_ShutDown()
EndFunc

I run this script using mentioned UDF. But I keep getting error when  my program is compiled. After error msgbox there is an empty file created called libmySQL_x64.dll, and its only created there when I get an error. 

image.png.6e1b98b79ef537c1b16ae44bca18105f.png

Edited by 20Ice18

❤️

Link to comment
Share on other sites

By the way I made this function that you can add to EzMySql.au3 udf  to check if value already exists in database to prevent multiple identical records if anyone needs it. 

 

Func EntryExistsInDatabase($$str_column1, $str_column2)
    Local $existingQuery = "SELECT COUNT(*) FROM Computers WHERE SerialNumber = '" & $str_column1 & "' AND ComputerName = '" & $str_column2 & "'"
    Local $existingResult = _EzMySql_Exec($existingQuery)
    If @error Then
        MsgBox(16, "Error", "Failed to execute the existing entry check query.")
        Return False
    EndIf

    If $existingResult = 1 Then
        Return True
    Else
        Return False
    EndIf
EndFunc


example:

 

Func data_computers_insert()
    Local $str_column1
    Local $str_column2
    Local $str_column3
    Local $sqlQuery

    ; Start the MySQL connection
    _EzMySql_Startup()

    ; Open the connection to the database
    _EzMySql_Open($str_db_host, $str_db_user, $str_db_password, $str_database, "3306")
    If @error Then
        MsgBox(16, "Error", "Failed to open the MySQL connection.")
        Return
    EndIf

    ; Set the values for the computer
    $str_column1 = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "SystemProductName")
    If @error Then
        MsgBox(16, "Error", "Failed to read the serial number from the registry.")
        _EzMySql_Close()
        _EzMySql_ShutDown()
        Return
    EndIf

    $str_column2 = @ComputerName
    $str_column3 = @YEAR & "-" & @MON & "-" & @MDAY

    ; Check if the entry already exists
    If EntryExistsInDatabase($str_column1, $str_column2) Then
        ;modify however you want 
        MsgBox(16, "Error", "Entry already exists in the database.")
        _EzMySql_Close()
        _EzMySql_ShutDown()
        Return
    EndIf

    ; Build the SQL query
    $sqlQuery = "INSERT INTO Computers (SerialNumber, ComputerName, SubmissionDate) VALUES ('" & $str_column1 & "', '" & $str_column2 & "', '" & $str_column3 & "')"

    ; Display the SQL query in the console
    ConsoleWrite("SQL Query: " & $sqlQuery & @CRLF)

    ; Execute the query
    _EzMySql_Exec($sqlQuery)
    If @error Then
        MsgBox(16, "Error", "Failed to execute the SQL query.")
        _EzMySql_Close()
        _EzMySql_ShutDown()
        Return
    EndIf

    _EzMySql_Close()
    _EzMySql_ShutDown()
EndFunc

You can modify it to meet your specific requirements. 

 

I tested it and turns out that  it's able to create .dll 32 bit even when its compiled, so I guess the issue is somewhere where 64 bit .dll is created.

Edited by 20Ice18

❤️

Link to comment
Share on other sites

  • Solution

The issue was in EzMtSql_Dll.au3 file there is  at the fist sight obvious mistake with a lining, I thought since there is a comment ; Dont Tidy me! Author is aware of it but it probably was because of other reason. so I rewrote the original 

Func _EzMySql_Dll() ; Dont Tidy me!
If @AutoItX64 = 0 Then
Local $sData = '0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000F00000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000C9F688528D97E6018D97E6018D97E60130D870018197E6....

to 
 

Func _EzMySql_Dll() ; Dont Tidy me!
    Local $sData
    If @AutoItX64 = 0 Then
        $sData = '0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000F....


Anyone whos reading this and has the same issue make sure to line up the function and condition correctly and put Local $sData into the function, not into  If statement, or else $sData will be undefined in Else statement later. 😬

❤️

Link to comment
Share on other sites

  • Moderators

20Ice18,

Delighted you got it sorted, but please do not pad your post count unnecessarily. There is an edit function, so please use it. Many posts merged above.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...