Matt - More ADO/EuCom questions

new topic     » topic index » view thread      » older message » newer message

Matt,

Sorry to keep coming back, but since few EuCom examples exist using ADO,
I don't know where else to turn...

<dramatic scene>
Matt: Jonas, I'm going to recommend you be removed from the program.
Jonas: No, you can't do that!  I aint got nowhere else to go!
Jonas sobs, sitting in the puddle of mud.
</dramatic scene>

My ADO program is working SO FAR and now I'm trying to actually get data
from one of the columns in a record set.  The problem I'm running into 
is trying to retrieve the a Field object from the Fields object.  The 
following code generates the following message when trying to get 
a Field_p_Item property from ado_fields:

80020009: Exception occurred.
Exception Source: ADODB.Fields
Exception Description: Item cannot be found in the collection corresponding to t
he requested name or ordinal.

I noticed that the ordinal for Fields_p_Item property in msado27.ew is 0?

Thanks again for your help!

with trace
without warning

include eucom.ew
include msado27.ew

atom ado_connect, void, conn_str, cmd_str, ado_rcdset, rtn_val, 
	ado_fields, ado_field, ado_variant
sequence text

com_err_out(1)
ado_connect = create_com_object(Connection_clsid_ix)
--ado_rcdset = create_com_object(Recordset_clsid_ix)

-- Event functions for ConnectionEvents
procedure ConnectionEvents_InfoMessage_proc( atom this, atom pError, atom
adStatus, atom pConnection )
	puts(1,"InfoMessage\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_InfoMessage, 
	routine_id("ConnectionEvents_InfoMessage_proc" ))
	
procedure ConnectionEvents_BeginTransComplete_proc( atom this, atom
TransactionLevel, atom pError, atom adStatus, atom pConnection )
	puts(1,"BeginTransComplete\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_BeginTransComplete, 
	routine_id("ConnectionEvents_BeginTransComplete_proc" ))
	
procedure ConnectionEvents_CommitTransComplete_proc( atom this, atom pError,
atom adStatus, atom pConnection )
	puts(1,"CommitTransComplete\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_CommitTransComplete, 
	routine_id("ConnectionEvents_CommitTransComplete_proc" ))
	
procedure ConnectionEvents_RollbackTransComplete_proc( atom this, atom pError,
atom adStatus, atom pConnection )
	puts(1,"RollbackTransComplete\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_RollbackTransComplete, 
	routine_id("ConnectionEvents_RollbackTransComplete_proc" ))
	
procedure ConnectionEvents_WillExecute_proc( atom this, atom Source, atom
CursorType, atom LockType, atom Options, atom adStatus, atom pCommand, atom
pRecordset, atom pConnection )
	puts(1,"WillExecute\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_WillExecute, 
	routine_id("ConnectionEvents_WillExecute_proc" ))
	
procedure ConnectionEvents_ExecuteComplete_proc( atom this, atom
RecordsAffected, atom pError, atom adStatus, atom pCommand, atom pRecordset, atom
pConnection
)
	puts(1,"ExecuteComplete\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_WillConnect, 
	routine_id("ConnectionEvents_ExecuteComplete_proc" ))
	
procedure ConnectionEvents_WillConnect_proc( atom this, atom ConnectionString,
atom UserID, atom Password, atom Options, atom adStatus, atom pConnection
)
	puts(1,"WillConnect\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_WillConnect, 
	routine_id("ConnectionEvents_WillConnect_proc" ))

procedure ConnectionEvents_ConnectComplete_proc( atom this, atom pError, atom
adStatus, atom pConnection )
	puts(1,"ConnectComplete\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_ConnectComplete, 
	routine_id("ConnectionEvents_ConnectComplete_proc" ))
	
procedure ConnectionEvents_Disconnect_proc( atom this, atom adStatus, atom
pConnection )
puts(1,"Disconnect\n")
end procedure
com_event_routine( ado_connect, ConnectionEvents_Disconnect, 
	routine_id("ConnectionEvents_Disconnect_proc" ))

-- Start of real code

conn_str = alloc_bstr("Provider=IBMDA400;Data Source=66.140.221.246")

-- This connect approach works
--void = invoke( ado_connect, {Connection_p_ConnectionString}, {conn_str},
{VT_BSTR}, DISPATCH_PROPERTYPUT )
--void = invoke(ado_connect, {"Open"},{},{},DISPATCH_METHOD)
-- So does this one
void = invoke(ado_connect,
{Connection_m_Open},{conn_str},{VT_BSTR},DISPATCH_METHOD)

-- Print the connected state, should be a 1
? invoke(ado_connect, {"State"}, {},{}, DISPATCH_PROPERTYGET )

void = wait_key()

-- Now try just executing a command
cmd_str = alloc_bstr("{CALL QSYS.QCMDEXC('SNDMSG MSG(''TEST FROM ADO'')
TOUSR(JONAS)',0000000040.00000)}")
void = invoke(ado_connect, 
{Connection_m_Execute},{cmd_str},{VT_BSTR},DISPATCH_METHOD)
free(cmd_str)

-- Now we'll try retrieving some records
cmd_str = alloc_bstr("select * from qgpl.qauoopt")
rtn_val = invoke(ado_connect,
{Connection_m_Execute},{cmd_str},{VT_BSTR},DISPATCH_METHOD)
ado_rcdset = ref_com_object(Recordset_clsid_ix,rtn_val)
? invoke(ado_rcdset,{Recordset_p_RecordCount},{},{},DISPATCH_PROPERTYGET )

-- Maybe print the first record?
rtn_val = invoke(ado_rcdset,{Recordset_p_Fields},{},{},DISPATCH_PROPERTYGET )
ado_fields = ref_com_object(Fields_clsid_ix,rtn_val)
trace(1)
? invoke(ado_fields,{Fields_p_Count},{},{},DISPATCH_PROPERTYGET )
rtn_val =
invoke(ado_fields,{Fields_p_Item},{0},{VT_VARIANT},DISPATCH_PROPERTYGET )
ado_field = ref_com_object(Field_clsid_ix,rtn_val)
rtn_val = invoke(ado_fields,{Field_p_Value},{},{},DISPATCH_PROPERTYGET )
text = get_variant(rtn_val)
? text
void = invoke(ado_rcdset, {Recordset_m_Close},{},{},DISPATCH_METHOD)
free(cmd_str)

-- close the connection
void = invoke(ado_connect, {Connection_m_Close},{},{},DISPATCH_METHOD)
free(conn_str)

void = wait_key()
release_com()



Jonas Temple
http://www.yhti.net/~jktemple

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu