XinLu Posted February 13, 2008 Share Posted February 13, 2008 (edited) For example, this is what you will see in my databaseTable: dbo.fm_layout_branchesids branch_txt01 CS02 sth elsewhen I run the following code, NO errors occured, everything works fine$Connection = ObjCreate("ADODB.Connection")$RecordSet=ObjCreate("ADODB.Recordset")$string = "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;Initial Catalog=test;User ID=test;Password=test;"$Connection.Open($string)$RecordSet.Open("Select * FROM dbo.fm_layout_branches WHERE branch_txt = 'CS';", $Connection)MsgBox(0, Default, $RecordSet.Fields("ids").value)However, if I try something are not existing in the table, error occurs, for example$RecordSet.Open("Select * FROM dbo.fm_layout_branches WHERE branch_txt = 'xxxx';", $Connection)The error is Line -1:Error: The requested action with this object has failed.My question will be: is there anyway I can know from AutoIt there is NO record matching the SELECT FROM WHERE condition, and meanwhile, keep the program running (right now, it quits immediately)Thanks a lot! Edited February 13, 2008 by XinLu Link to comment Share on other sites More sharing options...
ptrex Posted February 13, 2008 Share Posted February 13, 2008 @xinlu Maybe you can usesomething like @error If @error Then MsgBox(4096,"Error", "No Records Found") Else MsgBox(4096, "Result", $result) EndIf Regards, ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
XinLu Posted February 13, 2008 Author Share Posted February 13, 2008 @xinlu Maybe you can usesomething like @error If @error Then MsgBox(4096,"Error", "No Records Found") Else MsgBox(4096, "Result", $result) EndIf Regards, ptrex Thank you for your reply. It won't work that way, because the error teminates the script immediately. @error won't be detected. However, I actually figured how to solve it. I used ObjEvent() $Err=ObjEvent("AutoIt.Error","ODBCJET_ErroHandler") Func ODBCJET_ErroHandler() MsgBox(262192, _ "Data Exchange Error", _ "Error number: " & $Err.Number & @CRLF & _ "Error source: " & $Err.Source & @CRLF & _ "Description: " & $Err.Description) Local $err1 = $Err.number If $err1 = 0 Then $err1 = -1 SetError($Err) EndFunc To gather if there is at least one record in the table matching up the condition, I used this: $RecordSet.Open("Select * FROM dbo.fm_inventory WHERE part = '" & $part & "'", $Connection) MsgBox(0, Default, $RecordSet.EOF) EOF always returns -1 if there is NO records found. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now