very good ![]()
I really wish that this ADO RDD gets completed and you are doing a great job ![]()
AdoRdd will become a great tool for harbour/xHarbour users
very good ![]()
I really wish that this ADO RDD gets completed and you are doing a great job ![]()
AdoRdd will become a great tool for harbour/xHarbour users
Antonio,
Do you have idea what function OrdKeyNo and OrdKeyCount are calling in RDD ?
Can you help me find that ?
I cannot find it!
Concerning the indexes with FOR clause to be transformed to WHERE clause for SQL. Is it common to be used in predefined indexes or only temporary indexes?
In our app we use it only in temporary indexes thus in the array of predefined indexes this situation is not forseen.
Do yo think its worth to cover it also?
HB_FUNC( ORDKEYNO )
{
AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer();
if( pArea )
{
DBORDERINFO pOrderInfo;
memset( &pOrderInfo, 0, sizeof( pOrderInfo ) );
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING | HB_IT_NUMERIC );
pOrderInfo.atomBagName = hb_param( 2, HB_IT_STRING );
/* Either or both may be NIL */
pOrderInfo.itmNewVal = NULL;
pOrderInfo.itmResult = hb_itemPutNL( NULL, 0 );
SELF_ORDINFO( pArea, DBOI_POSITION, &pOrderInfo );
hb_itemReturnRelease( pOrderInfo.itmResult );
}
else
hb_errRT_DBCMD( EG_NOTABLE, EDBCMD_NOTABLE, NULL, HB_ERR_FUNCNAME );
}HB_FUNC( ORDKEYCOUNT )
{
AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer();
if( pArea )
{
DBORDERINFO pOrderInfo;
memset( &pOrderInfo, 0, sizeof( pOrderInfo ) );
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING | HB_IT_NUMERIC );
pOrderInfo.atomBagName = hb_param( 2, HB_IT_STRING );
/* Either or both may be NIL */
pOrderInfo.itmResult = hb_itemPutNL( NULL, 0 );
SELF_ORDINFO( pArea, DBOI_KEYCOUNT, &pOrderInfo );
hb_itemReturnRelease( pOrderInfo.itmResult );
}
else
hb_errRT_DBCMD( EG_NOTABLE, EDBCMD_NOTABLE, NULL, HB_ERR_FUNCNAME );
}FOR clause could be saved as a string and when you issue a SELECT command then you append FOR ...
SELECT * FROM customers FOR ...
Antonio,
Thanks I think see it now its ORDINFO
All locking already finished and it seems 100% compatible
FOR and UNIQUE on indexes are working
Its translate to WHERE clause and DISTINCT CLAUSE in selects.
We are now taking care of :
SCOPES to SELECT WHERE field BETWEEN value1 AND value2
Index clause NEXT translate to TOP n but for ex Oracle its ROWNUM we are checking how to solve these diferences between different SQLs
SEEK and FIND
SQLPARSER that we use already in other applications for ADS that transforms a normal old clipper filter expression to SQL SELECT taking in consideration active index.
I have a deadline for this part of the project to 27.03 so I hope to have all done till Friday and Ill post "clean" code after.
Still Fieldinfo its not working as we want. There are still problems with lenght and decimal places of DBF numeric fields types.
Can you find out with Mr Rao how to know or force that all recordsets are opened with the same connection obj.
This is imperative for transactions for locking concurrency
Now we ve a demand to prevent 100% SQL INJECTION. I have to study this ? Do you or Mr Rao have any ideas?
Cross your fingers as the most dificult part is still to come (RELATIONS)
Antonio,
I just sent an email to Mr. Rao asking him for his help.
You have all my support, hopefully you complete it ![]()
1) Syntax of USE ... and DBUSEAREA.
2) Is the recordset opened by the ADORDD? If so how does the ADORDD knows the connection object? If ADORDD opens the recordset, does it open with connectionstring or a connection object?
1) Syntax of USE ... and DBUSEAREA.
2) Is the recordset opened by the ADORDD?
If so how does the ADORDD knows the connection object?
If ADORDD opens the recordset, does it open with connectionstring or a connection object?
Antonio,
Do you mean this value ?
aWAData[ WA_CONNECTION ]
so you can't reuse it ?
thanks
Maybe you are closing it somewhere ?
STATIC oADODB :=""
FUNCTION ADO_OPEN(.....
IF EMPTY(oADODB) //only first time
aWAData[ WA_CONNECTION ] := TOleAuto():New( "ADODB.Connection" )
aWAData[ WA_CONNECTION ]:OPEN(.....
oADODB := aWAData[ WA_CONNECTION ]
ELSE
aWAData[ WA_CONNECTION ] :=oADODB
ENDIF
oRecordSet := TOleAuto():New( "ADODB.Recordset" )
oRecordSet:Open( aWAData[ WA_TABLENAME ], oADODB)Antonio,
Where is it crashing ?
Have you traced the code to check where it crashes ?
Please place some MsgInfo()s or use OutputDebugString( cMsg ) (remember to load dbwin32.exe first).
Antonio,
oRecordSet:Open(...