![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I've created an ActiveX Script within a DTS Package in SQL Server 2000 that exports data from a database table into an XML file. It works great, but now I'd like to filter the data to only include data where the "item_date" field is before today's date. (i.e. item_date = 2005-11-30; today_date = 2005-12-07) But when I try the following code: '************************************************* ********************* ' Visual Basic ActiveX Script '************************************************* *********************** Function Main() Dim objADORS Dim objXMLDoc Dim nodeRoot Dim nodeTemp Dim nodeRelease 'Create ADO and MSXML DOMDocument Objects Set objADORS = CreateObject("ADODB.Recordset") Set objXMLDoc = CreateObject("MSXML2.DOMDocument.4.0") 'Run the stored procedure and load the Recordset objADORS.Open "SELECT * FROM tblTABLENAME", _ "PROVIDER=SQLOLEDB.1;SERVER=SERVERNAME;UID=USERNAM E;PWD=PASSWORD;DATABASE=DBNAME;" 'Prepare the XML Document objXMLDoc.loadXML "<root />" Set nodeRoot = objXMLDoc.documentElement 'For each record in the Recordset Set nodeDate = objXMLDoc.createElement("item_date") While Not objADORS.EOF and Not date() = nodeDate Set nodeRelease = objXMLDoc.createElement("release") nodeRoot.appendChild nodeRelease Set nodeTemp = objXMLDoc.createElement("release_id") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("release_id").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("start_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("start_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("end_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("end_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("item_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("item_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("title") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("title").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("information") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("information").Value) nodeRelease.appendChild nodeTemp objADORS.moveNext Wend objADORS.Close Set objADORS = Nothing 'Save the created XML document objXMLDoc.Save "B:\XMLFILE.xml" Main = DTSTaskExecResult_Success End Function ...I receive an error stating: Error Code: 0 Error Source: Microsoft VBScript runtime error Error Description: Object doesn't support this property or method Error on Line 25 If someone could help me to figure out what I'm doing wrong with this script, it would be greatly appreciated. Thanks. |
#3
| |||
| |||
|
|
Post Note: I've worked with this script more, and figured out why I wasn't pulling the value from the DB table. (Not the smartest moment of my life) I copied the wrong line to get the value. I had used: Set nodeDate = objXMLDoc.createElement("item_date") ...and I should have used: Set nodeDate = Trim(objADORS.Fields("item_date").Value) Anyway, now it's trying to compare the two dates, like this: ...'For each record in the Recordset While Not objADORS.EOF Set nodeDate = Trim(objADORS.Fields("item_date").Value) If date() >= nodeDate Then Set nodeRelease = objXMLDoc.createElement("release")... ...but I'm getting this error message now: Error Code: 0 Error Source=Microsoft VBScript runtime error Error Description: Object required: '[string: "6/26/2002"]' Error on Line 25 The good news is that the date it references is the date of the first record in the DB table. Of course the bad news is that I'm still getting an error. If anyone can let me know what I'm doing wrong, that would be great. Thanks again. KWilliams "KWilliams" wrote: I've created an ActiveX Script within a DTS Package in SQL Server 2000 that exports data from a database table into an XML file. It works great, but now I'd like to filter the data to only include data where the "item_date" field is before today's date. (i.e. item_date = 2005-11-30; today_date = 2005-12-07) But when I try the following code: '************************************************* ********************* ' Visual Basic ActiveX Script '************************************************* *********************** Function Main() Dim objADORS Dim objXMLDoc Dim nodeRoot Dim nodeTemp Dim nodeRelease 'Create ADO and MSXML DOMDocument Objects Set objADORS = CreateObject("ADODB.Recordset") Set objXMLDoc = CreateObject("MSXML2.DOMDocument.4.0") 'Run the stored procedure and load the Recordset objADORS.Open "SELECT * FROM tblTABLENAME", _ "PROVIDER=SQLOLEDB.1;SERVER=SERVERNAME;UID=USERNAM E;PWD=PASSWORD;DATABASE=DBNAME;" 'Prepare the XML Document objXMLDoc.loadXML "<root />" Set nodeRoot = objXMLDoc.documentElement 'For each record in the Recordset Set nodeDate = objXMLDoc.createElement("item_date") While Not objADORS.EOF and Not date() = nodeDate Set nodeRelease = objXMLDoc.createElement("release") nodeRoot.appendChild nodeRelease Set nodeTemp = objXMLDoc.createElement("release_id") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("release_id").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("start_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("start_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("end_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("end_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("item_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("item_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("title") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("title").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("information") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("information").Value) nodeRelease.appendChild nodeTemp objADORS.moveNext Wend objADORS.Close Set objADORS = Nothing 'Save the created XML document objXMLDoc.Save "B:\XMLFILE.xml" Main = DTSTaskExecResult_Success End Function ...I receive an error stating: Error Code: 0 Error Source: Microsoft VBScript runtime error Error Description: Object doesn't support this property or method Error on Line 25 If someone could help me to figure out what I'm doing wrong with this script, it would be greatly appreciated. Thanks. |
#4
| |||
| |||
|
|
format the date BEFORE comparing to date() "KWilliams" wrote: Post Note: I've worked with this script more, and figured out why I wasn't pulling the value from the DB table. (Not the smartest moment of my life) I copied the wrong line to get the value. I had used: Set nodeDate = objXMLDoc.createElement("item_date") ...and I should have used: Set nodeDate = Trim(objADORS.Fields("item_date").Value) Anyway, now it's trying to compare the two dates, like this: ...'For each record in the Recordset While Not objADORS.EOF Set nodeDate = Trim(objADORS.Fields("item_date").Value) If date() >= nodeDate Then Set nodeRelease = objXMLDoc.createElement("release")... ...but I'm getting this error message now: Error Code: 0 Error Source=Microsoft VBScript runtime error Error Description: Object required: '[string: "6/26/2002"]' Error on Line 25 The good news is that the date it references is the date of the first record in the DB table. Of course the bad news is that I'm still getting an error. If anyone can let me know what I'm doing wrong, that would be great. Thanks again. KWilliams "KWilliams" wrote: I've created an ActiveX Script within a DTS Package in SQL Server 2000 that exports data from a database table into an XML file. It works great, but now I'd like to filter the data to only include data where the "item_date" field is before today's date. (i.e. item_date = 2005-11-30; today_date = 2005-12-07) But when I try the following code: '************************************************* ********************* ' Visual Basic ActiveX Script '************************************************* *********************** Function Main() Dim objADORS Dim objXMLDoc Dim nodeRoot Dim nodeTemp Dim nodeRelease 'Create ADO and MSXML DOMDocument Objects Set objADORS = CreateObject("ADODB.Recordset") Set objXMLDoc = CreateObject("MSXML2.DOMDocument.4.0") 'Run the stored procedure and load the Recordset objADORS.Open "SELECT * FROM tblTABLENAME", _ "PROVIDER=SQLOLEDB.1;SERVER=SERVERNAME;UID=USERNAM E;PWD=PASSWORD;DATABASE=DBNAME;" 'Prepare the XML Document objXMLDoc.loadXML "<root />" Set nodeRoot = objXMLDoc.documentElement 'For each record in the Recordset Set nodeDate = objXMLDoc.createElement("item_date") While Not objADORS.EOF and Not date() = nodeDate Set nodeRelease = objXMLDoc.createElement("release") nodeRoot.appendChild nodeRelease Set nodeTemp = objXMLDoc.createElement("release_id") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("release_id").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("start_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("start_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("end_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("end_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("item_date") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("item_date").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("title") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("title").Value) nodeRelease.appendChild nodeTemp Set nodeTemp = objXMLDoc.createElement("information") nodeTemp.nodeTypedValue = Trim(objADORS.Fields("information").Value) nodeRelease.appendChild nodeTemp objADORS.moveNext Wend objADORS.Close Set objADORS = Nothing 'Save the created XML document objXMLDoc.Save "B:\XMLFILE.xml" Main = DTSTaskExecResult_Success End Function ...I receive an error stating: Error Code: 0 Error Source: Microsoft VBScript runtime error Error Description: Object doesn't support this property or method Error on Line 25 If someone could help me to figure out what I'm doing wrong with this script, it would be greatly appreciated. Thanks. |
#5
| |||
| |||
|
|
The "and objADORS.Fields("start_date").Value < date() and objADORS.Fields("end_date").Value > date()"...should be put into your SQL query. And not into the loop where you are checking the result of your query. It's a bit like selecting 1000 records, inspecting each and then discarding 995. You should just write a query to look for 5 in the 1st place. |
... 'Run the stored procedure and load the Recordset objADORS.Open "SELECT * FROM tblNewsReleases_test WHERE (start_date < GETDATE()) AND (end_date > GETDATE())", _ "PROVIDER=SQLOLEDB.1;SERVER=SERVERNAME;UID=UID;PWD=PWD;DATABASE=DBNAME;" 'Prepare the XML Document objXMLDoc.loadXML "<root />" Set nodeRoot = objXMLDoc.documentElement 'For each record in the Recordset While Not objADORS.EOF ....
![]() |
| Thread Tools | |
| Display Modes | |
| |