Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка преобразования!? [D7, MSSQL]


Страницы:   1 2

VadimSpb ©   (2006-01-09 11:36:00) 

Получаю следующую ошибку преобразования типа данных при запросе.
Вариант №1.
ADOCommand.CommandText := 'INSERT INTO Table1 (Pole1) Values (100.45);
ADOCommand.Execute;
Pole1 - типа float.
Все замечательно работает.

Вариант №2.
Edit1.Text := '100.45';
ADOCommand.CommandText := 'INSERT INTO Table1 (Pole1) Values (' + Edit1.Text + ')';
ADOCommand.Execute;
Не работает!!!
Ошибка: '100.45' is not a valid floating point value.

Может проблема в длительных Новогодних праздниках?


VadimSpb   (2006-01-09 20:24:00) [1]


> делаем следующий вывод - ты до сих пор пытаешся "пудрить
> нам мозги" списывая собственные промахи на "неведомый подземный
> стук".

Жаль что встретил определенное непонимание.
Каждый может делать свои выводы.


sniknik   (2006-01-09 20:22:00) [2]

советую всеже приводить код as is, и с запасом +- несколько строк, а не только то что сами считаете важным "избранное так сказать", очищая с вашей точки зрения "шелуху" убираете и то что пытаетесь донесть (если бы знали, что именно нужно, то сами бы легко разпознали ошибку, а раз не распознали...).


sniknik   (2006-01-09 20:18:00) [3]

> В Accesse как-то проходило, а сейчас правлю под SQL SERVER вот и полезло.
ни Access ни MSSQL здесь ни причем,
ошибка:
> 'xxxxxx' is not a valid floating point value.
дельфевая, это ошибка преобразования строки к флоату (EConvertError). преобразований в коде ([0]) нет. делаем вывод - эта часть "опущена как несущственная"  
в MSSQL было бы (на преобразование)
Error converting data type xxxxxx to float
а в Access типа
Несоответствие типов данных в выражении условия отбора
делаем следующий вывод - ты до сих пор пытаешся "пудрить нам мозги" списывая собственные промахи на "неведомый подземный стук".


VadimSpb   (2006-01-09 20:14:00) [4]

Забавно было видеть именно ошибку преобразования типа данных.
Это откуда? Формируется и передается именно стринга.


Desdechado   (2006-01-09 20:03:00) [5]

повторю для тех, кто в танке
используй параметры, не будет надуманных и не очень проблем


VadimSpb   (2006-01-09 19:49:00) [6]

Однако, сделал. Всем спасибо.
"Забытых" процессов не было, проверил сразу.
Все проще и одновременно грустнее.
Просто заменил Edit на новый - и все!
Похоже, что это результат перехода с D7 на D2005. Уже не в первый раз сталкиваюсь с тупыми проблемами (напр. поведение MessageBox, пришлось переписать на API и пр., а оказалось лечится SP1,2,3).
В Accesse как-то проходило, а сейчас правлю под SQL SERVER вот и полезло.


VadimSpb   (2006-01-09 16:53:00) [7]


> Я тут мимо пробегал...
> Может ОН думает, что это не текст, а цифры. Или наоборот.
>  Гы. А может ему фиолетово?

Будете проходить мимо - проходите мимо.


Dioman   (2006-01-09 16:46:00) [8]


> VadimSpb   (09.01.06 16:27) [15]
>
> Очень полезный совет. Часто помогает?
>


не часто, но может помочь ;)


parovoZZ   (2006-01-09 16:41:00) [9]

Я тут мимо пробегал...
Может ОН думает, что это не текст, а цифры. Или наоборот. Гы. А может ему фиолетово?


Fay   (2006-01-09 16:40:00) [10]

2 VadimSpb   (09.01.06 16:23) [13]
> Пример простой, поробуйте сами
Всё ОК


VadimSpb   (2006-01-09 16:27:00) [11]

Очень полезный совет. Часто помогает?


dioman   (2006-01-09 16:25:00) [12]


> VadimSpb   (09.01.06 16:23) [13]


переустанови виндоуз.


VadimSpb   (2006-01-09 16:23:00) [13]

Да-а, уж и не думал, что в обмане обвинят ... :-((
Мне совсем не до смеха, дурка полная. В отладчике вижу две одинаковые стринги. Пример простой, поробуйте сами.
А запятую там в принципе нельзя ставить - это и ежу ясно.


sniknik   (2006-01-09 16:00:00) [14]

> в обоих примерах на сервер идут одинаковые строки....
если выполняется тот код, что показан нам. (!!!)

но думаю он опустил разные "несущественные" (с его точки зрения) детали, и мы здесь видим совершенно не то, что у него выполняется (и дает ошибку), т.е. он нас попросту обманывает. или "разводит" (что тоже возможно).


Dioman   (2006-01-09 15:52:00) [15]


> Desdechado ©   (09.01.06 14:56) [8]


в обоих примерах на сервер идут одинаковые строки....


Anatoly Podgoretsky   (2006-01-09 15:51:00) [16]

Desdechado ©   (09.01.06 14:56) [8]
Ну он вроде как пишет, что точка, но думаю обманывает.


Fay   (2006-01-09 15:00:00) [17]

2 Desdechado ©   (09.01.06 14:56) [8]
На сервере всегда точка. В '100.45' тоже точка. Видимо, не очень разные.


Desdechado   (2006-01-09 14:56:00) [18]

используй параметры и все будет ок
проблема в непонимании разделителя целой и дробной части
на клиенте и сервере они могут быть разные, причем как понастройкам ОС, так и сервера БД


Fay   (2006-01-09 14:52:00) [19]

2 tech ©   (09.01.06 14:37) [6]
Попробуйте
ADOCommand.CommandText := 'INSERT INTO Table1 (Pole1) Values (         100.45            )';


tech   (2006-01-09 14:37:00) [20]

Попробуйте

ADOCommand.CommandText := 'INSERT INTO Table1 (Pole1) Values (' + Trim(Edit1.Text) + ')';


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо