eugene
Дата: 05.11.2004 12:32:48
Евгений Багоцкий
В дополнение к моему предыдущему вопросу о повторяемости имен полей, ключей при анализе структур некоторых БД Oracle с помощью ADOX (через ADOX.Catalog), выясняется, что подобное происходит при использовании «классического ADO» метода OpenSchema. Так при использовании команд
Set cn = New ADODB.Connection: cn.Mode = adModeRead:
cn.CursorLocation = adUseClient: cn.Open (c(ii))
Set rs = cn(ii).OpenSchema(adSchemaPrimaryKeys): 'анализ 1-ичн ключей
rs.Sort = "COLUMN_NAME"
rs.Filter = "TABLE_NAME = ‘AWA’”
For j = 0 To rs.RecordCount – 1
w = rs!COLUMN_NAME
rs.MoveNext
next j
или тех же команд типа, только с OpenSchema(adSchemaColumns):
или похожих команд
Set rs = cn(ii).OpenSchema(adSchemaForeignKeys):
rs.Sort = "PK_COLUMN_NAME"
rs.Filter = "TABLE_NAME = ‘AWA’”
For j = 0 To rs.RecordCount – 1
w = rs!PK_COLUMN_NAME
rs.MoveNext
next j
выясняется что на некоторых БД Oracle рекордсеты имеют несколько повторов каждой записи, в частности полей rs!COLUMN_NAME или rs!PK_COLUMN_NAME
Напрашивается предположение что если как методы ADO так и ADOX приводят к этой повторяемости (не видимой при просмотре структур таблиц например через Oracle Enterprize Manager) то это действительно имеет место. Что это? Неточность ADO или искажения структуры Oracle-таблиц например, после репликации?
Сомневающимся готов выслать *.Exe моей программы и даже исходный код а также дамп БД Oracle где указанный эффект имеет место быть