Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
Вот такой конструкцией пытаюсь вставить строку в таблицу Lalala на SQL Server'е: Код: plaintext Затыкаюсь на на этой строке, если второе значение - rs("ParFloat"), - которое беру из открытого заранее рекордсета, имеет знаки после запятой: код начинает ругаться, что число переданных значений в VALUES() больше, чем число объявленных столбцов. Т.е. запятая в rs("ParFloat") воспринимается как разделитель VALUES. Если, ради эксперимента модернизирую строку так: Код: plaintext т.е. CLng()'ом убираю запятую и знаки после нее, то все проходит без проблем. Если пытаюсь передать второе значение как сторку: Код: plaintext то код кричит об ошибке преобразования значения varchar во float. Вопрос: как вставить с помощью INSERT INTO в поле таблицы (тип поля float) именно значение float, т.е. число со знаками после запятой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 16:53 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
Попробовал у себя вот так: "insert into t1 (str,num) values ('" & request("string") & "'," & cstr(request("number")) & ")" И вот так тоже(что тоже самое, как у тебя): "insert into t1 (str,num) values ('" & request("string") & "'," & request("number") & ")" Прошло на ура. Никто не ругался. Поле num в базе - dectimal (пробовал на Access). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 17:47 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
На Access 100% пройдет, сам с него начинал. Поэтому и сам испытываю некоторые неудобства и удивление. Не проходит именно под ASP. Пробую это все под DreamWeaver. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 17:53 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
ASP - инструмент, Access - хранилище. Ты меня недопонял: под тем, что я сказал про Access, я имел ввиду то, что из ASP insert в Access прошел удачно. Возможности попробовать на SQL Server не имею. Приведенный мной код - чистый ASP(уж это-то можно было увидеть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 23:18 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
Уточню ситуацию. Таблица находится в базе на SQL Server 2000 со всеми Service Pack'ами. На компе (W2000) с которого работаю, прописан ODBC источник данных. Т.е. ASP код работает не напрямую с SQL Server, а через ODBC. Независимо от типа поля в принимающей таблице - float или decimal - ситуация не меняется. Например. Последовательно заношу в таблицу две таких строки: rs("ParData") = 01.01.2004 rs("ParFloat") = 1111 rs("ParData") = 01.01.2004 rs("ParFloat") = 1111,222 Первая заносится без проблем. На второй выскакивает описанная выше ошибка: Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement. /test1/index.asp, line 729 Browser Type: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) Т.е. запятая от дробной части второго передаваемого значения воспринимается как разделитель передаваемых значений: код считает, что передается ТРИ значения, а не два. Смена запятой на точку прямо в строке или в Regional Options ситуацию не меняет. У меня нет большого опыта в ASP, может нужно как-то обозначить в строке с перечислением VALUES, что второе значение - это число с десятичным дробным разделителем? RFF Приведенный мной код - чистый ASP(уж это-то можно было увидеть). С таким же успехом можно сказать, что это чистый Access VBA :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 09:47 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
Вы формируете SQL целиком, без параметров. Значит надо преобразовать значение Float в строку, а потом, уже в строке, заменить запятую на точку. replace(rs("ParFlat"),",",".") Лучше написать функции преобразования и для Float и для Date. Принимающие поле rs и выдающие строку (Ведь бывает поле = Null). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 12:18 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
Ну приведу пример (файлик распакуещь в 1 папку, и по обратись к файлу s1.asp в браузере). Кстати имей ввиду, что число, вводимое через запятую в поле ввода не является числом! Тут-то и кроется твоя ошибка, по-моему. Тебе надо проверять данные, полученные из формы на их тип. И если в базе у тебя тип поля числовой, то когда ты попытаешься туда запихнуть текст, она тебе сама скажет ошибку. Я попробовал разные варианты. И на твою ошибку наткнулся именно тогда, когда в числовое поле писал числа через запятую. В тексте таких проблем нет. Вывод: ошибка в исходных данных и способе их передачи в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 12:28 |
|
||
|
Проблема с INSERT INTO в ASP
|
|||
|---|---|---|---|
|
#18+
Worobjoff Уже так и сделал. Все работает. Просто, было сомнение, что дополнительный REPLACE на больших объемах данных - реально заполняемых столбцов больше - будет вносить дополнительные задержки ... RFT Это немного не по теме: я не беру данные из формы. Я писал выше, что значение rs("ParFloat") - это УЖЕ десятичное число с десятичным разделителем и знаками после него ... Ваш код использует драйвер Access: повторно соглашаюсь - будет работать в Access, хотя у меня все-равно не запустился. Как понял, с INSERT INTO в TSQL SQL Server'а другая история. Поискав в западных конфах, нашел кучу вопросов на эту тему. Кроме использования REPLACE никто ничего не предлагает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 13:10 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=1011&tid=1394862]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 346ms |

| 0 / 0 |
