Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: VB6 recordset и запрос к нескольким таблицам БД Добавлено: 26.07.07 21:10  

Автор вопроса:  Viktor Petrov
Здравствуйте, господа. Имеется вопрос.

Пишу программу, которая плотно взаимодействует с БД. SQL-запросы составляются автоматически и могут быть адресованы как к одной таблице, так и к нескольким. С самими-то запросами сложностей нет, благо SQL позволяет использовать адресацию вида TableName.ColumnName всегда, независимо от того, к скольки таблицам обращен запрос. Совсем иное дело - бейсиковский рекордсет. С извлечением результатов запроса из него и возникла сложность. Дело в том, что он требует обращаться к колонке как к "ColumnName" если ее название в данном запросе уникально. Т.Е, к примеру, запрос к таблицам Table1 и Table2. Если в обеих таблицах есть колонка "ID", узнать ее значение можно так:
IdVariable1 = RecordsetName1("Table1.ID")
IdVariable2 = RecordsetName1("Table2.ID")

Однако если, к примеру, колонка "FotoName" есть только в таблице Table2, то обращение вида
FnVariable1 = RecordsetName1("Table2.FotoName")
приведет к ошибке - "Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру.". В то время как обращение вида
FnVariable1 = RecordsetName1("FotoName")
сработает без проблем.

Из-за этой глупости значительно затрудняется извлечение результата из рекордсета.

Конечно, можно запросить названия всех колонок из всех запрашиваемых таблиц и проверить, повторяются ли названия нужных колонок. Но это усложнит код и заметно снизит быстродействие.

Другой вариант - всегда использовать обращение вида RecordsetName1("Table1.ColumnName"), а в случае ошибки заменять на RecordsetName1("ColumnName"). Но это, ИМХО, неправильно - я предпочитаю использовать On Error для обработки ошибок, а не для чего-то другого.

И потому вопрос - нет ли какого-нибудь третьего способа, свободного от недостатков первых двух?

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 26.07.07 21:22
SELECT Table1.ColumnName AS MYCOLUMN1 ...

RecordsetName1("MYCOLUMN1";)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам