![]() |
|
![]() ![]() ![]() |
|
blackDancer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 23.1.2009 Где: Тамбов Репутация: нет Всего: нет |
Доброе время суток господа.
У меня вот такая тема сейчас попытаюсь обрисовать ситуацию. Я пишу клиентское приложение в C++ Builder6 обращаюсь к базе InterBase всё соединяется и замечательно работает. Вот кусок кода нужно что бы значения переменных name_k и adres_k которые я потом буду считывать из TEdit записались в базу данных. char name_k[]="25061987", adres_k[]="1987"; IBQuery1->Close(); IBQuery1->SQL->Clear(); IBQuery1->SQL->Add("INSERT INTO TEMP (ID, NAME, ADRES) VALUES (gen_id(GENERATOR_TEMP,1),"+name_k+", "+adres_k+")"); IBQuery1->Active=true; Как вставить переменные name_k и adres_k в тело запроса, как показано в примере не работает?????? Если писать вот так: IBQuery1->SQL->Add("INSERT INTO TEMP (ID, NAME, ADRES) VALUES (gen_id(GENERATOR_TEMP,1),'+name_k+', '+adres_k+')"); то записывается в поля базы как значение +name_k+ и +adres_k+ Это сообщение отредактировал(а) blackDancer - 30.1.2009, 16:29 |
|||
|
||||
Dmi3ev |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
Есть несколько способов
Вот так попробуй... А еще можно через параметры, написать вот такой запрос:
а потом в программе просто IBQuery1->Parameters->ParamByName("NAME")->Value=Edit1->Text; Я тут пишу, поэтому извиняй, если маленькие неточности... Это сообщение отредактировал(а) Dmi3ev - 30.1.2009, 16:54 -------------------- |
||||||
|
|||||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
NAME - зареганое слово...
или убери его или в [] возьми... |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
ParamByName
|
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
ага! тогда заменить на N или любое другое... суть остается... -------------------- |
|||
|
||||
blackDancer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 23.1.2009 Где: Тамбов Репутация: нет Всего: нет |
Блин беда какая то?
Я попробовла два способа: //способ1----------------------------------------------------------- IBQuery1->Close(); IBQuery1->SQL->Clear(); IBQuery1->SQL->Add("INSERT INTO TEMP (ID, NAME, ADRES) VALUES (gen_id(GENERATOR_TEMP,1),'"+enter_name->Text+"', '"+enter_adres->Text+"');"); IBQuery1->ExecSQL(); //---------------------------------------------------------------- //способ2---------------------------------------------------------------- IBQuery1->Close(); //деактивировать предидущий запрос if(!IBQuery1->Prepared) IBQuery1->Prepare(); //подготовить запрос IBQuery1->ParamByName("NAM")->Value= enter_name->Text; IBQuery1->ParamByName("ADRES")->Value= enter_adres->Text; IBQuery1->Open(); //выполнить команду SQL //---------------------------------------------------------------- в свойствах IBQuery соответственно прописал: INSERT INTO TEMP (ID, NAME, ADRES) VALUES (gen_id(GENERATOR_TEMP,1), :NAM, :ADRES) Вроде всё записывает английские символы, цифры только вот русские символы не хочет выдаёт ошибку что делать? вот текст ошибки: Project Project1.exe raised exception class EIBInterBaseError with message 'arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character sets'. Process stopped.Use Step or Run to continue. |
|||
|
||||
Alca |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Если данные изменяются (INSERT, UPDATE, ...) то надо юзать:
а не:
Какой билдер?
Может юникод надо юзать или где-то в настройках кодировку выставить. Помню в Paradox-e такое делал, а здесь не в курсах. Это сообщение отредактировал(а) Alca - 2.2.2009, 11:42 |
||||||
|
|||||||
blackDancer |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 23.1.2009 Где: Тамбов Репутация: нет Всего: нет |
Спасибо за замечание но проблема не решилась как не записывались русские буквы так и не записываются?Почему? Добавлено через 2 минуты и 51 секунду Билдер у меня 6 кодировку я везде ставил Win1251 в базе, а вот в билдере чёт не уверен. |
||||||||
|
|||||||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
О работе с русскими буквами в InterBase/Firebird
Почитай может чем поможет. ![]() Добавлено через 2 минуты и 23 секунды Borland Interbase / Firebird FAQ Это сообщение отредактировал(а) Alca - 2.2.2009, 12:39 |
|||
|
||||
blackDancer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 23.1.2009 Где: Тамбов Репутация: нет Всего: нет |
Да всё разобрался теперь и русские буквы записывает.
Я просто в элементе IBDatabase в свойствах которые вызываются двойным щелчком в пункте Charactec Set не поставил мою кодировку т.е Win1251 после этого всё работает.Вот!!! И теперь такой вопрос как тепреь делать заполнение для связаных таблиц может какой нибудь примерчик кто нибудь даст? Очень интересно как будут себя вести ключевые поля достаточно сгенерировать значение для одного ключевого поля, а к полю по которому оно связано заполниться автоматически или надо это предусмотреть???? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |