Բովանդակություն
Ընդհանուր ինֆորմացիա
- Ավելացվել է նոր դաս` dbc, որում ավելացված ֆունկցիաները հանդիսանում են գործիքներ առանց պարամետրի (պարամետրերի արժեքները հարցման տեքստի մեջ տեղադրած) հարցումներ կատարելու: Դրանք փոխարինում են Util դասի ExecuteQuery ֆունկցիային:
- AsQuery դասում ավելացել են ֆունկցիաներ, որ փոխարինում են նույն դասի «հին» շարահյուսությամբ ֆունկցիաներին և դասը հանդիսանում է «թույլ» տիպավորված պարամետրերով հարցումներ կատարելու գործիք:
- Ավելացվել է նոր դաս` AsDataTable, որ թույլ է տալիս հարցման արդյունքները քեշավորել օպերատիվ հիշողության մեջ. Կարող է բեռնել այնքան տվյալ, որքան կբավարարի ազատ օպերատիվ հիշողությունը: As-4x միջուկի վրա հիմնված ծրագրերը 32բիթանոց են, դրանց հասանելի օպերատիվ հիշողությունը չի կարող գերազանցել 2ԳԲ:
- Համակարգում ավելացել և ավելանալու են նոր միացումներ և վերոհիշյալ գործիքները լիարժեքորեն սատարում են հարցման կատարման համար միացման ընտրության հնարավորությունը:
- Olap-ի միացմամբ հարցումներ կատարելու համար այժմ անհրաժեշտ է օգտագործել միացման ընտրության պարամետրը. Տողի մեջ OLAPDB.. նոր ֆունկցիաներում չի կարելի գրել: Տվյալների աղբյուրի հիմնական հարցումը OLAPDB.. գրելաձևը շարունակում է սատարել: DBARCHIVE.. գրելաձևը սատարվում է:
- Varchar(Max), Nvarchar(Max), Varbinary(Max) տիպի սյուները կամ դրանց հին համարժեքները պետք է թվարկված լինեն Select-ի սյուների վերջում: Մի քանի այդպիսի սյան առկայության դեպքում արժեքները պետք է մշակվեն թվարկման հերթականությամբ:
- Rdo-ով կատարվող Varchar(Max), Nvarchar(Max), Varbinary(Max) տիպի սյուներ կամ դրանց հին համարժեքներ վերադարձնող հարցումները պետք է կատարվեն առնվազն rdOpenKeyset-ով
- dbc, AsQuery դասերի ֆունկցիաները դեռևս ներառում են RSType պարամետրը. Այն օգտագործվում է միայն «հին» ռեժիմում և հեռացվելու է, երբ համակարգը աշխատի միայն նոր ռեժիմով:
- Անհրաժեշտ է ուշադրություն դարձնել պարամետրերի փոխված հերթականությանը:
- Ծրագրային օգտագործման դեպքում Տվյալների աղբյուրի OpenCursor ֆունկցիային ավելացվել է հիմնական հարցման ընտրության հնարավորություն. Ինտերֆեյսից կանչելիս հիմնական հարցումը կատարվում է Connectiօns_DS միացումով:
- Նոր դրայվերի անցումը տալիս է հնարավորություն օգտագործել SQL-ում եղած, բայց rdo-ի պատճառով մինչ այդ անհասանելի հնարավորություններ:
Util.ExecuteQuery
Արդյունք չվերադարձնող հարցումներ
Util.ExecuteQuery QueryText, false, x, y, z, QueryTimeout
|
dbc.ExecuteNonQuery QueryText, QueryTimeout
|
Ոչ մեծ արդյունք վերադարձնող հարցումներ կամ հարցումներ, որ ընթացքում այլ հարցումներ են կատարվում կամ տողերի քանակից կախված ալգորիթմով օգտագործվող (rdOpenKeyset-ով կանչված) հարցումներ
Dim rs As rdoResultset
Set rs = Util.ExecuteQuery( _
"Query text",
true, _
RSType, _
LockType, _
RsOption, _
QueryTimeout)
'Use rs.RowCount
Do While Not rs.EOF
'Use rs!fFIELD
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
|
Dim rs As AsDataTable
Set rs = dbc.OpenDataTable( _
"Query text", _
QueryTimeout,
, _
RSType)
'Use rs.RowCount
Do While Not rs.EOF
'Use rs("fFIELD")
rs.MoveNext
Loop
Set rs = Nothing
|
- Անհրաժեշտ է հեռացնել rs.Close-ը
- Set rs = Nothing անհրաժեշտ է, եթե օգտագործվող հիշողությունը ֆունկցիայի ավարտից ավելի շուտ ազատելու կարիք կա
- Ցանկալի է rs!fField փոխարինել rs(“fFIELD”)-ով
1 արժեք (Scalar) վերադարձնող հարցումներ
Dim rs As rdoResultset
Set rs = Util.ExecuteQuery( _
"Query text",
true, _
RSType, _
LockType, _
RsOption, _
QueryTimeout)
If Not rs.EOF Then
'Use rs!fFIELD0 ' Use rs(0)
End If
rs.Close
Set rs = Nothing
|
Dim resultValue As Variant
resultValue = dbc.ExecuteScalar( _
"Query text", _
QueryTimeout)
If Not IsEmpty(resultValue) Then
'Use resultValue
End If
|
Մեծ արդյունք վերադարձնող հարցումներ, որոնց ընթացքում այլ հարցումներ չեն կատարվում և դրանք օգտագործող ալգորիթմները տողերի քանակից կախված չեն
Dim rs As rdoResultset
Set rs = Util.ExecuteQuery( _
"Query text",
true, _
RSType, _
LockType, _
RsOption, _
QueryTimeout)
Do While Not rs.EOF
'Use rs!fField
rs.MoveNext
Loop
rs.Close
|
Dim rs As AsSqlResultSet
Set rs = dbc.ExecuteReader( _
"Query text", _
QueryTimeout,
, _
RSType)
Do While Not rs.EOF
'Use rs("fFIELD")
rs.MoveNext
Loop
rs.Close
|
- Ցանկալի է rs!fField փոխարինել rs(“fFIELD”)-ով
Տվյալների աղբյուրներ
Ինտերֆեյսից կանչվող տվյալների աղբյուրներ, որոնք ստեղծում են ժամանակավոր աղյուսակներ, բայց OnEachRow, Valid, … ֆունկցիաներում դրանք չեն օգտագործվում
Util.ExecuteQuery QueryText, false, x, y, z, QueryTimeout
|
dbc.ExecuteNonQuery QueryText, QueryTimeout, Connectiօns_DS
|
Տվյալների աղբյուրներ, որ օգտագործված են տրանզակցիաների ընթացքում կամ այլ տվյալների աղբյուրների OnEachRow, Valid,… ֆունկցիաներում
Քանի որ տվյալների աղբյուրի տվյալների բեռնման հիմնական հարցումը կատարվելու է այլ միացումով, տվյալների աղբյուրը չի տեսնի հիմնական միացմամբ արդեն փոխված տվյալները: Եթե տվյալների աղբյուրը չունի ամեն տողի համար կատարվող հարցումներ, ապա կարելի է OpenCursor ֆունկցիայում ավելացված նոր պարամետրով ապահովել, որ հիմնական հարցումը կատարվի գլխավոր միացմամբ, հակառակ դեպքում այս տվյալների աղբյուրների օգտագործումը պետք է բացառել և փոխարինել տվյալները այլ ալգորիթմով ստանալով:
oData.OpenCursor CursorType, LockType, Indicate
|
oData.OpenCursor CursorType, LockType, Indicate, Connectiօns_Main
|
AsQuery
Ոչ մեծ արդյունք վերադարձնող հարցումներ կամ հարցումներ, որ ընթացքում այլ հարցումներ են կատարվում կամ տողերի քանակից կախված ալգորիթմով օգտագործվող (rdOpenKeyset-ով կանչված) հարցումներ
Dim rs As rdoResultset
Set rs = oAsQuery.ExecuteReader( _
RSType, RSLocktype, RSOption, QueryTimeout)
'Use rs.RowCount
Do while Not rs.EOF
'Use rs!fFIELD
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
|
Dim rs As AsDataTable
Set rs = oAsQuery.OpenDataTable( _
QueryTimeout, , RSType)
'Use rs.RowCount
Do while Not rs.EOF
'Use rs("fFIELD")
rs.MoveNext
Loop
Set rs = Nothing
|
- Վերադարձվող տիպը rdoResultSet չէ այլ AsDataTable:
- Անհրաժեշտ է հեռացնել rs.Close-ը
- Set rs = Nothing անհրաժեշտ է, եթե օգտագործվող հիշողությունը ֆունկցիայի ավարտից ավելի շուտ ազատելու կարիք կա
- Ցանկալի է rs!fField փոխարինել rs(“fFIELD”)-ով
Մեծ արդյունք վերադարձնող հարցումներ, որոնց ընթացքում այլ հարցումներ չեն կատարվում և դրանք օգտագործող ալգորիթմները տողերի քանակից կախված չեն
Dim rs as rdoResultSet
Set rs = oAsQuery.ExecuteReader( _
RSType, RSLocktype, RSOption, QueryTimeout)
Do while Not rs.EOF
'Use rs!fField
rs.MoveNext
Loop
rs.Close
|
Dim rs as AsSqlResultSet
Set rs = oAsQuery.ExecuteReader( _
QueryTimeout, , RSType)
Do while Not rs.EOF
'Use rs("fFIELD")
rs.MoveNext
Loop
rs.Close
|
- Վերադարձվող տիպը rdoResultSet չէ այլ AsSqlResultSet:
- Ցանկալի է rs!fField փոխարինել rs(“fFIELD”)-ով
ColumnTo* ֆունկցիաներ
rdoResultSet-ից AsSqlResultSet-ի անցնելիս, անհրաժեշտ է փոխարինել հետևյալ ֆունկցիաների կանչերը`
Հին ֆունկցիա |
Նոր ֆունկցիա |
ColumnToString |
SqlColumnToString |
ColumnToFile |
SqlColumnToFile |
ColumnToFileText |
SqlColumnToFileText |
ColumnToString-ի դեպքում այլ է պարամետրերի ցուցակը
Փոփոխություններ
- Համակարգից հեռացվել է AsData դասի OpenCursor() ֆունկցիայի վերջին արգումենտը (blnWithPrevious):
AsData դասի ֆունկցիաներ BOF()-ը,MovePrevious()-ը,MoveFirst()-ը և MoveLast()-ը,CursorRowCount-ը նոր Odbc Driver-ով աշխատելիս կառաջացնեն սխալ։ Անցումային և հին Odbc Driver-ի ռեժիմներով աշխատելիս Debug տարբերակում ցույց կտրվի ,որ այդ ֆունկցիաները հնացել են,իսկ Release տարբերակում ոչինչ չի փոխվի։
- AsQuery.ExecuteScalar և AsQuery.ExecuteReader ֆունկցիաների նախատիպերը փոխվել են`
Public Function ExecuteScalar(Optional ByVal QueryTimeout As Long = -1, _
Optional ByVal lConnectionType As ConnectionType = Connection_Main) As Variant
Public Function ExecuteReader(Optional ByVal QueryTimeout As Long = -1, _
Optional ByVal lConnectionType As ConnectionType = Connection_Main, _
Optional ByVal lCursorType As ResultsetTypeConstants = rdOpenForwardOnly) As AsSqlResultset
Լրացուցիչ հղումներ
AsSqlCommand օբյեկտ
AsSqlCommand օրինակներ
AsDbc օրինակներ