|
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
|
Ну, и если надо структуру таблицы до выполнения запроса получить, то ADOX надо использовать:
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший