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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 03:18   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
Смущение Использование русских имен столбцов в FireBird

Доброго времени суток.
При попытке добавить запись в таблицу следующим способом появляется ошибка.
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
pFIBQuery1.SQL.Clear;
Form1.pFIBQuery1.SQL.Text:='INSERT INTO NT (ID,KOL,ИМЯ) VALUES(:N,:KOL,:Name)';
Form1.pFIBQuery1.ParamByName('N').Value:=2;
Form1.pFIBQuery1.ParamByName('KOL').Value:=2;
Form1.pFIBQuery1.ParamByName('Name').Value:='Оп оп';
Form1.pFIBQuery1.ExecQuery;
Form1.pFIBQuery1.Transaction.Commit;
end;
Ругает на И, пробовал заключать в кавычки "" и в скобки [] безрезультатно
Lokos вне форума Ответить с цитированием
Старый 26.04.2010, 04:13   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Если у Вас поле ID - автоинкрементное, то эту строчку:
Код:
Form1.pFIBQuery1.ParamByName('N').Value:=2;
можете убрать.

Попробуйте выполнить такой код:
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
pFIBQuery1.SQL.Clear;
Form1.pFIBQuery1.SQL.Text:='INSERT INTO NT (ID,KOL,ИМЯ) VALUES(:null,:KOL,:Name)';
Form1.pFIBQuery1.ParamByName('KOL').Value:=2;
Form1.pFIBQuery1.ParamByName('Name').Value:='Оп оп';
Form1.pFIBQuery1.ExecQuery;
Form1.pFIBQuery1.Transaction.Commit;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.04.2010, 04:43   #3
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Если у Вас поле ID - автоинкрементное, то эту строчку:
Код:
Form1.pFIBQuery1.ParamByName('N').Value:=2;
можете убрать.

Попробуйте выполнить такой код:
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
pFIBQuery1.SQL.Clear;
Form1.pFIBQuery1.SQL.Text:='INSERT INTO NT (ID,KOL,ИМЯ) VALUES(:null,:KOL,:Name)';
Form1.pFIBQuery1.ParamByName('KOL').Value:=2;
Form1.pFIBQuery1.ParamByName('Name').Value:='Оп оп';
Form1.pFIBQuery1.ExecQuery;
Form1.pFIBQuery1.Transaction.Commit;
end;
поле не автоинкрементное до этого еще не дошел. Ошибка выводится на букву И. вот текст ошибки.


Invalid token
Dynamic SQL Error
SQL Error code = -104
Token unknown -Line 1, colum 24
И.
'.

вообщем вот так.
Lokos вне форума Ответить с цитированием
Старый 26.04.2010, 05:03   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
поле не автоинкрементное
А почему оно не автоинкрементное?? Должно быть таковым.

Цитата:
до этого еще не дошел
А когда собираетесь?

Цитата:
Ошибка выводится на букву И. вот
А английские заносятся слова?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.04.2010, 05:14   #5
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
А почему оно не автоинкрементное?? Должно быть таковым.


А когда собираетесь?


А английские заносятся слова?
Да заносятся прекрасно. Эм по поводу автоинкремента, в настройках поля захожу в автоинкремент ставлю создать генератор начальное значение 1 тыкаю ок. В генераторах появляется GEN_NT_ID.
Перехожу в Delphy на кнопочку следующий код
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
pFIBQuery1.SQL.Clear;
Form1.pFIBQuery1.SQL.Text:='INSERT INTO NT (ID,KOL) VALUES(null,:KOL)';
Form1.pFIBQuery1.ParamByName('KOL').Value:=2;
Form1.pFIBQuery1.ExecQuery;
Form1.pFIBQuery1.Transaction.Commit;
end;
Добавление происходит хороше но в поле ID пишется значение null, тоесть автоувеличение не происходит
Lokos вне форума Ответить с цитированием
Старый 26.04.2010, 05:20   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А если через попробовать через pFIBDataSet1 выполнить запрос?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.04.2010, 05:25   #7
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
А если через попробовать через pFIBDataSet1 выполнить запрос?
Код запроса через DataSet
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   Form1.pFIBDataSet1.Active:=true;
   Form1.pFIBDataSet1.Edit;
   pFIBDataSet1.SQLs.SelectSQL.Text:='INSERT INTO NT (ID,KOL) VALUES(null,1)';
   Form1.pFIBDataSet1.Post;
end;
ошибка такая

query is empty


Забыл сказать что ключевые поля тоже не заданны. я так полагаю стоит его назначить ID
Lokos вне форума Ответить с цитированием
Старый 26.04.2010, 05:45   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
query is empty
"Запрос пуст" - значит пусто). А в свойстве InsertSQL у компонента pFIBDataSet1 вы написали что-нибудь?

Цитата:
Забыл сказать что ключевые поля тоже не заданны. я так полагаю стоит его назначить ID
Конечно стоит назначить! Ключевое поле оно на то и ключевое, что обеспечивает целостность и уникальность записей.

!!!!. Почему Вы так невнимательно работаете???
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   Form1.pFIBDataSet1.Active:=true;
   Form1.pFIBDataSet1.Edit;
   pFIBDataSet1.SQLs.SelectSQL.Text:='INSERT INTO NT (ID,KOL) VALUES(null,1)'; 
//зачем же пишите запрос вставки (Insert) в свойство SelectSQL у компонента pFIBDataSet1???
   Form1.pFIBDataSet1.Post;
end;
Потому и не работает.

Запрос должен быть таким:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   Form1.pFIBDataSet1.Active:=true;
   Form1.pFIBDataSet1.Edit;
   Form1.pFIBDataSet1.SQLs.InsertSQL.Text:='INSERT INTO NT (ID,KOL) VALUES(null,1)';
   Form1.pFIBDataSet1.Open;
//   Form1.pFIBDataSet1.Post; - эта строка здесь как собаке 5ая нога :)
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось Stilet; 26.04.2010 в 07:58.
artemavd вне форума Ответить с цитированием
Старый 26.04.2010, 05:50   #9
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Дело не во внимательности а в том что с начало хотелось научиться просто добавлять записи, после чего поработать с ключами и автоинкрементом.
Следующий код
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
    Form1.pFIBDataSet1.Active:=true;
   Form1.pFIBDataSet1.Edit;
   Form1.pFIBDataSet1.SQLs.InsertSQL.Text:='INSERT INTO NT (ID,KOL) VALUES(null,1)';
   Form1.pFIBDataSet1.Open;
end;
Выводит туже ошибку что и SelectSQL.
Ключ создал.
Lokos вне форума Ответить с цитированием
Старый 26.04.2010, 06:11   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А очищать текст предыдущего запроса пробовали?
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   Form1.pFIBDataSet1.Active:=true; //желательно не Active, а Close.
   Form1.pFIBDataSet1.Edit; //это не надо вообще, если Вы собираетесь вставлять записи
   Form1.pFIBDataSet1.SQLs.InsertSQL.Text:='INSERT INTO NT (ID,KOL) VALUES(null,1)';
   Form1.pFIBDataSet1.Open;
end;
Че, и так тоже не работает:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   Form1.pFIBDataSet1.Close;
   Form1.pFIBDataSet1.SQLs.InsertSQL.Text:='INSERT INTO NT(ID,KOL) VALUES(null,:K)';
   Form1.pFIBDataSet1.ParamByName('K').Value:='1';
   Form1.pFIBDataSet1.Open;
end;
???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двухмерный массив из 20 столбцов. Вставить в него столбец из чисел 10 после всех четных столбцов. Дмитрий142 Помощь студентам 9 07.06.2012 19:32
Возможно ли использование нескольких столбцов подстановки для одного поля? jonni Microsoft Office Access 10 20.05.2009 22:25
Использование кодовых имен страниц книги в надстройках tae1980 Microsoft Office Excel 3 17.03.2009 09:01
Сохранение имен столбцов при импорте данных из Delphi в Excel an4ik Общие вопросы Delphi 3 07.03.2009 15:23
Вывод имен столбцов maxix БД в Delphi 2 29.09.2008 16:28