![]() |
|
ADODB.Command .как узнать длину поля | ☑ | ||
---|---|---|---|---|
0
zladenuw
31.01.14
✎
14:43
|
Сейчас вот такой запросик. как узнать длину поля ?
Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = "Select LEFT(["+ИмяТаблицы+"].[Part-no],5)+'-'+RIGHT(["+ИмяТаблицы+"].[Part-no], 5) AS Part, |LEFT(["+ИмяТаблицы+"].[Former part no],5)+'-'+RIGHT(["+ИмяТаблицы+"].[Former part no], 5) AS Part2, |LEFT(["+ИмяТаблицы+"].[New Part no],5)+'-'+RIGHT(["+ИмяТаблицы+"].[New Part no], 5) AS Part3,["+ИмяТаблицы+"].[Service type] AS Type from "+ИмяТаблицы; |
|||
1
zladenuw
31.01.14
✎
14:47
|
Select LEFT(["+ИмяТаблицы+"].[Part-no],5)+'-'+RIGHT(["+ИмяТаблицы+"].[Part-no], 5) AS Part
Оказалось что правая часть может быть как 5 символов так и более. как узнать длину поля ? |
|||
2
Torquader
31.01.14
✎
14:47
|
Так команду нужно выполнить, и тогда, у результата появится длина поля.
В некоторых особо продвинутых серверах команду достаточно только "подготовить" (prepare), чтобы узнать данные результата ResultSet.Fields(номер).Length насколько помню. |
|||
3
Torquader
31.01.14
✎
14:48
|
А у таблицы вообще можно структуру запросить (но это зависит от того, кто у тебя в качестве SQL-сервера - их по разному надо спрашивать).
|
|||
4
zladenuw
31.01.14
✎
14:48
|
(2) мне надо в запросе.
так как дальше делаю вот так Command.CommandType = 1; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); ТЗ = ADOUtils.ADORecordsetToValueTable(RecordSet); |
|||
5
zladenuw
31.01.14
✎
14:49
|
да это mdb таблица
|
|||
6
Torquader
31.01.14
✎
14:50
|
(4) Вот это RecordSet = Новый COMОбъект("ADODB.RecordSet");
явно лишнее, так как оно перезапишется потом. |
|||
7
zladenuw
31.01.14
✎
14:51
|
(6) так я же туда помешаю результат команды и выполняю ее. а потом помешаю в тз.
|
|||
8
Torquader
31.01.14
✎
14:51
|
(5) Ну, к каждой таблице можно обратиться в запросе или в команде указав просто имя таблицы - и сразу в ответе мы получим RecordSet, связанный с ней, где через поля узнаем всё, что хочется.
|
|||
9
Torquader
31.01.14
✎
14:52
|
Сравни:
RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); И A=2; A=3; |
|||
10
Torquader
31.01.14
✎
14:57
|
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Source - это имя таблицы. Options = 2 - означает, что мы открываем таблицу. Закрыть только нужно не забыть. |
|||
11
zladenuw
31.01.14
✎
15:01
|
спасиб. буду разбираться
|
|||
12
Jaap Vduul
31.01.14
✎
15:15
|
http://msdn.microsoft.com/en-us/library/windows/desktop/ms676566(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675824(v=vs.85).aspx Ну, и если надо структуру таблицы до выполнения запроса получить, то ADOX надо использовать: http://msdn.microsoft.com/en-us/library/windows/desktop/ms676554(v=vs.85).aspx |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |