procedure TCustomADODataSet.UpdateIndexDefs;
const
SUnique = 'UNIQUE'; { Do not localize + 5 }
SIndexName = 'INDEX_NAME';
SColumnName = 'COLUMN_NAME';
SPrimaryKey = 'PRIMARY_KEY';
SAutoUpdate = 'AUTO_UPDATE';
SOrdinalPosition = 'ORDINAL_POSITION';
var
IndexInfo: _Recordset;
begin
try
FieldDefs.Update;
IndexDefs.Clear;
if (CommandType in [cmdTable, cmdTableDirect]) and (CommandText <> '') then
begin
SetConnectionFlag(cfIndex, True);
try
IndexInfo := Command.ActiveConnection.OpenSchema(adSchemaIndexes,
VarArrayOf([Unassigned, Unassigned, Unassigned, Unassigned, CommandText]),
EmptyParam);
while not IndexInfo.EOF do
begin
if TagVariant(IndexInfo.Fields[SOrdinalPosition].Value).ulVal > 1 then [COLOR=red]
{Вот именно на этом операторе}
with IndexDefs.Find(IndexInfo.Fields[SIndexName].Value) do
{---}[/COLOR]
Fields := Format('%s;%s', [Fields, IndexInfo.Fields[SColumnName].Value])
else
with IndexDefs.AddIndexDef do
begin
Name := VarToStr(IndexInfo.Fields[SIndexName].Value);
Fields := VarToStr(IndexInfo.Fields[SColumnName].Value);
if IndexInfo.Fields[SPrimaryKey].Value = True then
Options := Options + [ixPrimary];
if IndexInfo.Fields[SUnique].Value = True then
Options := Options + [ixUnique];
if IndexInfo.Fields[SAutoUpdate].Value = False then
Options := Options + [ixNonMaintained];
end;
IndexInfo.MoveNext;
end;
finally
SetConnectionFlag(cfIndex, False);
end;
end;
except
{ do nothing }
end;
end;
EOleVariantException при открытии ADOTable
Есть две таблицы в MS SQLServer2000. Между ними задан relation и определены соответствующие индексы. Через ADO открываю обе таблицы (провайдер MSDASQL). При попытке открыть мастер-таблицу (программа запускается из среды Builder V6.0) получаем EOleVariantException "Не могу преобразовать Variant(NUUL) к Variant(WString)". При запуске программы непосредстенно из Windows exception не возникает. В обоих вариантах сама программа далее работает как из пушки. Вопрос, почему так и где это может вылезти потом?
боюсь ошибиться, но не может ли это быть связано со свойством "IsNull" полей таблицы на сервере? и соответственно таких же свойств где-нибудь у ADOTable...
Цитата:
Originally posted by greyich
боюсь ошибиться, но не может ли это быть связано со свойством "IsNull" полей таблицы на сервере? и соответственно таких же свойств где-нибудь у ADOTable...
боюсь ошибиться, но не может ли это быть связано со свойством "IsNull" полей таблицы на сервере? и соответственно таких же свойств где-нибудь у ADOTable...
В таблицах есть поля IsNull, но в триггере OnCreate туда лепится пробел, а Exception возникает здесь:
Код: