Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 11:46   #1
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию SQLite, запрос UPDATE не выполняется

Всем привет. Странно все это. Запрос не выдает ошибки, но и не выполняет ничего.

Код:
  sldb.ExecSQL('UPDATE emitlst SET img_path = "' + UTF8Encode(FrmEditEmitent.LblImgPath.Caption) + '", nominal = "' + FrmEditEmitent.SpinEdit1.Text + '", emit_ticker = "' + UTF8Encode(FrmEditEmitent.Edit2.Text) + '", emit_ISIN = "' + UTF8Encode(FrmEditEmitent.Edit3.Text) + '", emit_description = "' + UTF8Encode(FrmEditEmitent.Memo1.Lines.Text) + '", emit_category = "' + UTF8Encode(FrmEditEmitent.ComboBox1.Text) + '" WHERE emit_name = "' + Utf8Encode(FrmEditEmitent.Edit1.Text) + '";');
такое ощущение, что WHERE не находит ничего. Когда удаляю WHERE - все добавляется прекрасно, но во все строки таблицы, иначе - ничего. Utf8Encode пашет, все отлично, я даже намеренно создал ошибку чтобы посмотреть, как выглядит запрос, там поиск по колонке нормальный, русскими символами. но в тоже время и не нормальный. как так? аналогичный запрос с поиском даты (WHERE) работает исправно. emit_name имеет тип String. спасибо заранее за помощь
impeee вне форума Ответить с цитированием
Старый 11.12.2013, 15:45   #2
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию

аналогичный запрос в INSERTах, в DELETE FROMах, рпаботает везде и всегда !
а в UPDATE не хочет. ну я весь запрос вылизал, ну ни одного символа не правильного
я пробовал AnsiToUTF8() и обратно, еще много кодировок перебрал, но суть в том, что Utf8Encode(FrmEditEmitent.Edit1.Tex t) правильнее некуда, там все правильн конвертируется
это аномалия просто у меня нет иного объяснения!!
impeee вне форума Ответить с цитированием
Старый 11.12.2013, 16:29   #3
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Так что может быть проще: делаете SELECT из той же таблицы с тем же условием и смотрите результат. Если условие верное, то получите выборку значений, пригодных для Update
ReportCube вне форума Ответить с цитированием
Старый 12.12.2013, 10:21   #4
impeee
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 56
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Так что может быть проще: делаете SELECT из той же таблицы с тем же условием и смотрите результат. Если условие верное, то получите выборку значений, пригодных для Update
при любой команде, за исключением UPDATE, все работало исправно.

оказалось, что камнем преткновения оказались русские символы. я нашел решение проблемы, порывшись в модуле SQLite и посмотрев, как там что кодируется. может кому и пригодится:
Код:
... WHERE emitname = "' + PAnsiChar(UTF8Encode(FrmEditEmitent.Edit1.Text)) + '";');
вот так все заработало.
impeee вне форума Ответить с цитированием
Старый 26.01.2014, 14:03   #5
dsoft
Новичок
Джуниор
 
Регистрация: 25.06.2008
Сообщений: 2
По умолчанию

Для Дельфи 7, я вообще не заморачивался. Писал как есть, в ANSI-кодировке.
dsoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не выполняется запрос. fhneh PHP 3 28.05.2013 20:00
Не выполняется запрос REztor SQL, базы данных 2 26.11.2012 17:56
Запрос не выполняется GreenShuller SQL, базы данных 5 17.06.2012 12:27
не выполняется запрос Deeller БД в Delphi 4 25.04.2011 09:14
Запрос с update zolomar Microsoft Office Access 3 25.01.2011 22:40