Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FireBird Добавление данных 
V
    Опции темы
Exai1e
Дата 16.3.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Здрасти. Пытаюсь добавить данные в базу вот таким способом

Код

procedure TMainForm.SpeedButton4Click(Sender: TObject);
var
  AddName, AddMedGroup, AddRealCount, AddBaseCount : string;
  AddPrice : Byte;
begin
  AddName       := LabeledEdit3.Text;
  AddMedGroup   := ComboBox2.Items.Text;
  AddRealCount  := LabeledEdit4.Text;
  AddBaseCount  := LabeledEdit5.Text;
  AddPrice      := StrToInt(LabeledEdit6.Text);

  IBQuery2.Params.ParamByName('NAME').Value := AddName;
  IBQuery2.Params.ParamByName('GROUP').Value := AddMedGroup;
  IBQuery2.Params.ParamByName('REALCOUNT').Value := AddRealCount;
  IBQuery2.Params.ParamByName('BASECOUNT').Value := AddBaseCount;
  IBQuery2.Params.ParamByName('PRICE').Value := AddPrice;

  try
    IBQuery2.ExecSQL;
    Except
      ShowMessage('Ошибка при добавлении данных');
      IBTransaction1.RollbackRetaining;
      exit;
    end;

    IBTransaction1.CommitRetaining;
    IBQuery1.Close;
    IBQuery1.Open;

end;


Мне кажется что "касяк" вот тут 
Код

AddMedGroup   := ComboBox2.Items.Text;


При попытке добавления данных возникает вот такая ошибка
http://img85.imageshack.us/img85/9691/tmpug4.jpg


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Rodman
Дата 16.3.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Exai1e, ааааааааааааааа....Group это зарезервированое слово...

или переименуй или напиши в запросу 
Код
.... [GROUP]

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Exai1e
Дата 16.3.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Спс) 
все из-за невнимательности :(

-----------------------------------------
решил одну проблему , появилась другая...

Код

procedure TMainForm.SpeedButton4Click(Sender: TObject);
var
  AddName, AddMedGroup, AddRealCount, AddBaseCount : string;
  AddPrice : Byte;
begin
  AddName       := LabeledEdit3.Text;
  AddMedGroup   := ComboBox2.Items.Text;
  AddRealCount  := LabeledEdit4.Text;
  AddBaseCount  := LabeledEdit5.Text;
  AddPrice      := StrToInt(LabeledEdit6.Text);

  IBQuery2.Params.ParamByName('NAME').Value := AddName;
  IBQuery2.Params.ParamByName('MEDGROUP').Value := AddMedGroup;
  IBQuery2.Params.ParamByName('REALCOUNT').Value := AddRealCount;
  IBQuery2.Params.ParamByName('BASECOUNT').Value := AddBaseCount;
  IBQuery2.Params.ParamByName('PRICE').Value := AddPrice;

  try
    IBQuery2.ExecSQL;
    Except
      ShowMessage('Îøèáêà ïðè äîáàâëåíèè äàííûõ');
      IBTransaction1.RollbackRetaining;
      exit;
    end;

    IBTransaction1.CommitRetaining;
    IBQuery1.Close;
    IBQuery1.Open;

end;


при добавление возникает терь вот такая ошибочка..
http://img83.imageshack.us/img83/7903/tmplq6.jpg


и программа останавливаеться вот тут 

  try
->    IBQuery2.ExecSQL;
    Except

как я понял ему не нравится длина вводиных данных... :-/ или я не так понял ;)


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Exai1e
Дата 16.3.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Попробывал заменить
Код

AddMedGroup   := ComboBox2.Items.Text;

на
Код

AddMedGroup   := Edit1.Text;


ошибки не выдает, но при нажатии на кнопку данные какбы добавляются но их не видно в гриде...
поэтому возникает вопрос, как обновляться данные введенные в таблицу ? 

и всеже как уладить проблему с ошибкой ... ? т.к. мне нужно чтобы пользователь выбирал данные из списка...
Спасибо


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Rodman
Дата 16.3.2007, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



ну а если в самой базе смотреть, данные есть????

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

Добавлено @ 13:35 
Цитата(Exai1e @  16.3.2007,  12:28 Найти цитируемый пост)
 т.к. мне нужно чтобы пользователь выбирал данные из списка...

Код

AddMedGroup := ComboBox2.Text;


и будет тебя счастье...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Exai1e
Дата 16.3.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Да в самой базе если смареть через IBExpert данные есть...

Спасибо

В откомпилированном приложения когда пытаюсь добавить данные , появляеться ошибка
вот

хотя в IBQuery2 в Params есть такое поле NAME
SQL запрос на добавление данных в IBQuery2 такой:

INSERT INTO MEDICAMENTS (NAME, MEDGROUP, REALCOUNT, BASECOUNT, PRICE)
VALUES (:NAME, :MEDGROUP, :REALCOUNT, :BASECOUNT, :PRICE);


:-/ в чем может быть проблема ?...

Это сообщение отредактировал(а) Exai1e - 16.3.2007, 13:57


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Rodman
Дата 16.3.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



создай таблицу с полями для такого вот запроса
Код

INSERT INTO MEDICAMENTS (PupilNAME, MEDGROUP, REALCOUNT, BASECOUNT, PRICEStudy)
VALUES (:PNAME, :MEDGROUP, :REALCOUNT, :BASECOUNT, :PRICEStudy);


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

Добавлено @ 14:01 
зачем столько лишнего, вот код должен работать
Код

procedure TMainForm.SpeedButton4Click(Sender: TObject);
begin
IBQuery2.Params.ParamByName('PNAME').Value := LabeledEdit3.Text;
IBQuery2.Params.ParamByName('MEDGROUP').Value := ComboBox2.Text;
IBQuery2.Params.ParamByName('REALCOUNT').Value := LabeledEdit4.Text;
IBQuery2.Params.ParamByName('BASECOUNT').Value := LabeledEdit5.Text;
IBQuery2.Params.ParamByName('PRICEStudy').Value := StrToInt(LabeledEdit6.Text);;
try
   IBQuery2.ExecSQL;
Except
   ShowMessage('?????? ??? ?????????? ??????');
   IBTransaction1.RollbackRetaining;
exit;
end;
IBTransaction1.CommitRetaining;
IBQuery1.Close;
IBQuery1.Open;
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Exai1e
Дата 16.3.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Ах вот в чем дело) спасибо) понял, попробую


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Exai1e
Дата 16.3.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



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

База данных
Код

/******************************************************************************/
/****              Generated by IBExpert 16.03.2007 18:42:16               ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES WIN1251;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/


CREATE GENERATOR GEN_MEDICAMENTS_ID;

CREATE TABLE MEDICAMENTS (
    MEDID         INTEGER NOT NULL,
    MEDNAME       VARCHAR(100) NOT NULL,
    MEDTYPE       VARCHAR(100) NOT NULL,
    MEDREALCOUNT  INTEGER NOT NULL,
    MEDBASECOUNT  INTEGER NOT NULL,
    MEDPRICE      INTEGER NOT NULL
);




/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: MEDICAMENTS_BI */
CREATE TRIGGER MEDICAMENTS_BI FOR MEDICAMENTS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.MEDID IS NULL) THEN
    NEW.MEDID = GEN_ID(GEN_MEDICAMENTS_ID,1);
END
^


SET TERM ; ^



/******************************************************************************/
/****                              Privileges                              ****/
/******************************************************************************/



Есть проект:
Форма - на форме:
IBDataBase1, IBTransaction1, DataSource1, IBQuery1, IBQuery2

IBDataBase1
Connection - True
DataBaseName - указан пусть к базе
DefaultTransaction - указан IBTransaction1
Param:
user_name=SYSDBA
password=masterkey
lc_ctype=WIN1251



IBTransaction1
DefaultDatabase - IBDatabase1

DataSource1
DataSet - IBQuery1


//Для вывода всей информации
IBQuery1
DataBase - IBDataBase1
SQL: 
Код
SELECT * FROM MEDICAMENTS ORDER BY MEDID


//Для добавления новых записей
IBQuery2
DataBase - IBDataBase1
DataSource - DataSource1
Params - Добавлены все поля
SQL - 
Код
INSERT INTO MEDICAMENTS (MEDID, MEDNAME, MEDTYPE, MEDREALCOUNT, MEDBASECOUNT, MEDPRICE)
VALUES (:MEDID, :MEDNAME, :MEDTYPE, :MEDREALCOUNT, :MEDBASECOUNT, :MEDPRICE);


--------------------------------------------------------------------------------------------------------------

Код

procedure TMainForm.FormCreate(Sender: TObject);
begin
  MainForm.IBQuery1.Open;
end;



Есть кнопка, которая должна добавлять данные в базу

Код

procedure TMainForm.AddInfoButtonClick(Sender: TObject);
begin
  IBQuery2.Params.ParamByName('MEDNAME'     ).Value := MedNameEdit.Text;
  IBQuery2.Params.ParamByName('MEDTYPE'     ).Value := MedTypeComboBox.Text;
  IBQuery2.Params.ParamByName('MEDREALCOUNT').Value := StrToInt(MedRealCountEdit.Text);
  IBQuery2.Params.ParamByName('MEDBASECOUNT').Value := StrToInt(MedBaseCountEdit.Text);
  IBQuery2.Params.ParamByName('MEDPRICE'    ).Value := StrToInt(MedPriceEdit.Text);

  try
    IBQuery2.ExecSQL;
    except
      ShowMessage('Ошибка при добавлении данных');
      IBTransaction1.RollbackRetaining;
    exit;
  end;

  IBTransaction1.CommitRetaining;
  IBQuery1.Close;
  IBQuery1.Open;

end;


При нажатии, на кнопку данные не добавляются, выскакивает ошибка "'Ошибка при  добавлении данных". Что сделан не так? где моя ошибка?



Это сообщение отредактировал(а) Exai1e - 16.3.2007, 19:03


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Rodman
Дата 16.3.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



не вижу как IBTransaction1 подключен... он одно из решающих звеньев в добавлении...

Цитата(Exai1e @  16.3.2007,  17:58 Найти цитируемый пост)
Params - Добавлены все поля

не нужно туда никого добавлять...


PM MAIL WWW Skype GTalk YIM MSN   Вверх
Exai1e
Дата 16.3.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Цитата

не вижу как IBTransaction1 подключен... он одно из решающих звеньев в добавлении...


эмм... всмысле подключен ? 
Active - true стоит... 

можно поподробнее ? - а то я малознающий_ночичек smile 
спс


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Rodman
Дата 16.3.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



IBDataBase1 и IBTransaction1 должны быть связаны... 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Exai1e
Дата 16.3.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Цитата

IBDataBase1 и IBTransaction1 должны быть связаны...  


В том и дело что они связаны... если имеется ввиду это...:

IBDataBase1
Connection - True
DataBaseName - указан пусть к базе
DefaultTransaction - указан IBTransaction1


IBTransaction1
DefaultDatabase - IBDatabase1


или я чтото не так понял ?


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Exai1e
Дата 17.3.2007, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Help me please  smile  smile  smile 


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Exai1e
Дата 17.3.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: нет
Всего: 30



Забыл сказать, если это поможет, то FB версии 2.0


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1162 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.