|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
Всем привет!!! SELECT * FROM table1 WHERE (UPPER(&fild)=word) INTO CURSOR temptable1 NOFILTER READWRITE thisform.grid1.RecordSource='temptable1' Значения fild (поле) word (значение записи) берутся из TextBoxов. Запрос выполняется идеально и результат верный, но только в тех случаях, когда тип задаваемого поля (fild) определён как character в table1.DBF. В других случаях (тип поля numeric, data...) при формировании запроса выдаётся ошибка "Function argument value, type or count is invalid" Можно ли программно что-нибудь сделать, чтобы запрос выполнился и была возвращена таблица с результатом, не вмешиваясь во внутреннюю целостность данных исходной таблицы? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 13:48 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
X_quazar, Можно. Значение переменной word из символьного переводить в числовое, если поле таблицы является таковым. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 14:25 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
для несимвольных убери UPPER(), т.к. UPPER() принимает только символьные параметры ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 14:37 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
Если у тебя fild это имя поля, то пиши так Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 14:40 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
Ну и не помешает проверка типа word Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 14:42 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
А возможно ли как-нибудь преобразовать тип word в тип fild, если type(field) != type('word')? Или хотя бы вручную преобразовывать тип word под тип fild, скажем, если type(field) = 'N', преобразовать word в число??? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 14:58 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
X_quazarА возможно ли как-нибудь преобразовать тип word в тип fild, если type(field) != type('word')? Или хотя бы вручную преобразовывать тип word под тип fild, скажем, если type(field) = 'N', преобразовать word в число??? Возможно Код: sql 1. 2. 3.
подобным образом для всех остальных типов прописать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 15:06 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
IgorNGX_quazar, Можно. Значение переменной word из символьного переводить в числовое, если поле таблицы является таковым. Только надо помнить, что результат VAL() зависит от соответствия SET POINT тому символу, который введён в строке перед дробной частью. Для даты результат преобразования из строки зависит от SET DATE. Для логических полей - надо проверять все варианты написания true/false, yes/no, да/нет. Dima Tif type(field) = 'C' Memo-поля тоже как бы символьные, так что как минимум Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 15:26 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
Оказывается, дела обстоят совсем по другому, нежели я описал вначале. Опишу более подробно процесс формирования word и fild. Значение fild берётся из combobox, источник данных для которого - одномерный массив [1, n], состоящий из полей текущей таблицы и создаваемый функцией AFIELDS. С fild как раз таки проблем нет, я выбирал в combobox поля, определённые разными типами в исходном DFB-файле, и выводил их тип. При любом раскладе он оказывался символьным. Значение word берётся из textbox, вводится вручную. Тут с типами оказалось всё посложнее. Такое ощущение, что фокс сам определяет тип вводимых данных. Когда я в textbox ввожу цифры, тип word отображается как числовой, пока не введу какой-либо символ. Тогда отображается как символьный. Возможно ли как-нибудь программно преобразовывать word в символьный тип? Я пытался делать следующее: IF type(word)= 'N' word=str(word) ? type(word) ENDIF не помогает, выдаёт ту же ошибку "Function argument value, type or count is invalid", напротив строки word=str(word) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 15:54 |
|
И снова SQL запрос.
|
|||
---|---|---|---|
#18+
X_quazarЯ пытался делать следующее: IF type(word)= 'N' word=str(word) ? type(word) ENDIF не помогает, выдаёт ту же ошибку "Function argument value, type or count is invalid", напротив строки word=str(word) надо word в кавычках Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 15:57 |
|
|
start [/forum/topic.php?fid=41&fpage=32&tid=1582646]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 351ms |
total: | 485ms |
0 / 0 |