Поиск:

Ответ в темуСоздание новой темы Создание опроса
> связать dbgrid с бд с помощью хранимой процедуры 
:(
    Опции темы
Anatom
Дата 22.3.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте у меня такая ситуация, я dbgrid вывожу данные из двух табл с помощью представления:
CREATE VIEW dbo.VIEW1
AS SELECT     dbo.[заказ билета].*, dbo.билет.[№билета] AS [№билета], dbo.билет.[№рейса] AS [№рейса],   dbo.билет.[id место отправления] AS [id место отправления], dbo.билет.[дата отправления] AS [дата отправления],   dbo.билет.[id место прибытия] AS [id место прибытия], dbo.билет.[дата прибытия] AS [дата прибытия], dbo.билет.[id тип вагона] AS [id тип вагона], bo.билет.[номер места] AS [номер места]
FROM         dbo.билет INNER JOINbo.[заказ билета] ON dbo.билет.[№паспорта] = dbo.[заказ билета].[№паспорта] AND dbo.билет.[№паспорта] = dbo.[заказ билета].[№паспорта]
все выводиться классно, но возникают проблемы когда начинаю вносить в дбгрид для этого я использую хранимую процедуру:
procedure TForm1.Button5Click(Sender: TObject);
begin
ADOStoredProc1.Parameters.ParamByName('@FIO').Value:=AdoTable2.FieldByName('ФИО').Value;
ADOStoredProc1.Parameters.ParamByName('@№pasporta').Value:=AdoTable2.FieldByName('№паспорта').Value;
ADOStoredProc1.Parameters.ParamByName('@telefon').Value:=AdoTable2.FieldByName('телефон').Value;
ADOStoredProc1.Parameters.ParamByName('@firma').Value:=AdoTable2.FieldByName('название фирмы').Value;
ADOStoredProc1.Parameters.ParamByName('@mestootp').Value:=AdoTable2.FieldByName('id место отправления').Value;
ADOStoredProc1.Parameters.ParamByName('@mestoprib').Value:=AdoTable2.FieldByName('id место прибытия').Value;
ADOStoredProc1.Parameters.ParamByName('@tipvagona').Value:=AdoTable2.FieldByName('id тип вагона').Value;
ADOStoredProc1.Parameters.ParamByName('@nomerbilet').Value:=AdoTable2.FieldByName('№билета').Value;
ADOStoredProc1.Parameters.ParamByName('@nomerreisa').Value:=AdoTable2.FieldByName('№рейса').Value;
ADOStoredProc1.Parameters.ParamByName('@nomermesta').Value:=AdoTable2.FieldByName('номер места').Value;
ADOStoredProc1.Parameters.ParamByName('@otprav').Value:=AdoTable2.FieldByName('дата отправления').Value;
ADOStoredProc1.Parameters.ParamByName('@prib').Value:=AdoTable2.FieldByName('дата прибытия').Value;
ADOStoredProc1.Parameters.ParamByName('@poriadok').Value:=AdoTable2.FieldByName('порядковый № вагона').Value;
ADOStoredProc1.Parameters.ParamByName('@nomerpoezda').Value:=AdoTable2.FieldByName('№поезда').Value;
ADOStoredProc1.ExecProc;
ADOTable2.Close;
ADOTable2.Open;
end;
и процедура на sql :alter procedure ADOStoredProc1
  @FIO varchar(60),
  @telefon int,
  @nomerpasporta int,
@firma varchar(40),
@nomerbilet int,
@nomerreisa int,
@mestootp int,
@mestoprib int,
@otprav datetime,
@prib datetime,
@tipvagona int,
@nomermesta int,
@poriadok int,
@nomerpoezda int
as 
insert into [заказ билета]  ([ФИО],[телефон], [№паспорта], [название фирмы])
values (@FIO,@telefon,@nomerpasporta,@firma)
  insert into [билет]  ([№билета],[№паспорта],[№рейса],[id место отправления],[id место прибытия],[дата отправления],[дата прибытия],[id тип вагона],
[номер места],[порядковый№ вагона],[№поезда])
values (@nomerbilet,@nomerpasporta,@nomerreisa,@mestootp,@mestoprib,@otprav,@prib,@tipvagona,@nomermesta,@poriadok,@nomerpoezda)
go

может я что-то не правильно написал подскажите пожалуйста?


Это сообщение отредактировал(а) Anatom - 23.3.2009, 17:17
PM MAIL   Вверх
Данкинг
Дата 23.3.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Anatom @  22.3.2009,  23:42 Найти цитируемый пост)
но возникают проблемы

Какие проблемы-то?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dmi3ev
Дата 23.3.2009, 00:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Anatom, отформатируй все нормально (с помощью кнопки код), потом проблему свою освети получше... тогда и поговорим...


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

PM MAIL   Вверх
Anatom
Дата 23.3.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



при запуске процедуры в QA он выдает мне следующюю ошибку:
INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_билет_рейсы'. The conflict occurred in database 'gd', table 'рейсы', column '№рейса'.
The statement has been terminated.
И еще я хотел спросить правильно ли я вообще сделал процедуру, код дв делфи?
PM MAIL   Вверх
Akella
Дата 23.3.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Anatom @  23.3.2009,  17:15 Найти цитируемый пост)
INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_билет_рейсы'. 

Ты вставляешь в столбец ссылку на несуществующую запись. Почитай, что такое ссылочная целостность (FOREIGN KEY), внешние ключи.
PM MAIL   Вверх
pseud
Дата 23.3.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



форматирование поста Anatom:
Код

CREATE VIEW dbo.VIEW1
AS SELECT     dbo.[заказ билета].*, dbo.билет.[№билета] AS [№билета], dbo.билет.[№рейса] AS [№рейса],   dbo.билет.[id место отправления] AS [id место отправления], dbo.билет.[дата отправления] AS [дата отправления],   dbo.билет.[id место прибытия] AS [id место прибытия], dbo.билет.[дата прибытия] AS [дата прибытия], dbo.билет.[id тип вагона] AS [id тип вагона], bo.билет.[номер места] AS [номер места]
FROM         dbo.билет INNER JOINbo.[заказ билета] ON dbo.билет.[№паспорта] = dbo.[заказ билета].[№паспорта] AND dbo.билет.[№паспорта] = dbo.[заказ билета].[№паспорта]

Код

procedure TForm1.Button5Click(Sender: TObject);
begin
  ADOStoredProc1.Parameters.ParamByName('@FIO').Value:=AdoTable2.FieldByName('ФИО').Value;
  ADOStoredProc1.Parameters.ParamByName('@№pasporta').Value:=AdoTable2.FieldByName('№паспорта').Value;
  ADOStoredProc1.Parameters.ParamByName('@telefon').Value:=AdoTable2.FieldByName('телефон').Value;
  ADOStoredProc1.Parameters.ParamByName('@firma').Value:=AdoTable2.FieldByName('название фирмы').Value;
  ADOStoredProc1.Parameters.ParamByName('@mestootp').Value:=AdoTable2.FieldByName('id место отправления').Value;
  ADOStoredProc1.Parameters.ParamByName('@mestoprib').Value:=AdoTable2.FieldByName('id место прибытия').Value;
  ADOStoredProc1.Parameters.ParamByName('@tipvagona').Value:=AdoTable2.FieldByName('id тип вагона').Value;
  ADOStoredProc1.Parameters.ParamByName('@nomerbilet').Value:=AdoTable2.FieldByName('№билета').Value;
  ADOStoredProc1.Parameters.ParamByName('@nomerreisa').Value:=AdoTable2.FieldByName('№рейса').Value;
  ADOStoredProc1.Parameters.ParamByName('@nomermesta').Value:=AdoTable2.FieldByName('номер места').Value;
  ADOStoredProc1.Parameters.ParamByName('@otprav').Value:=AdoTable2.FieldByName('дата отправления').Value;
  ADOStoredProc1.Parameters.ParamByName('@prib').Value:=AdoTable2.FieldByName('дата прибытия').Value;
  ADOStoredProc1.Parameters.ParamByName('@poriadok').Value:=AdoTable2.FieldByName('порядковый № вагона').Value;
  ADOStoredProc1.Parameters.ParamByName('@nomerpoezda').Value:=AdoTable2.FieldByName('№поезда').Value;
  ADOStoredProc1.ExecProc;
  ADOTable2.Close;
  ADOTable2.Open;
end;


Код

alter procedure ADOStoredProc1
  @FIO varchar(60),
  @telefon int,
  @nomerpasporta int,
@firma varchar(40),
@nomerbilet int,
@nomerreisa int,
@mestootp int,
@mestoprib int,
@otprav datetime,
@prib datetime,
@tipvagona int,
@nomermesta int,
@poriadok int,
@nomerpoezda int
as 
insert into [заказ билета]  ([ФИО],[телефон], [№паспорта], [название фирмы])
values (@FIO,@telefon,@nomerpasporta,@firma)
  insert into [билет]  ([№билета],[№паспорта],[№рейса],[id место отправления],[id место прибытия],[дата отправления],[дата прибытия],[id тип вагона],
[номер места],[порядковый№ вагона],[№поезда])
values (@nomerbilet,@nomerpasporta,@nomerreisa,@mestootp,@mestoprib,@otprav,@prib,@tipvagona,@nomermesta,@poriadok,@nomerpoezda)
go



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Anatom
Дата 23.3.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Akella,  но у меня же есть такая табл рейсы в которой есть одно поле №рейса.
pseud, спасибо я просто не знал как так красиво отредактироваровать

Это сообщение отредактировал(а) Anatom - 23.3.2009, 17:40
PM MAIL   Вверх
Anatom
Дата 23.3.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



или я просто не могу вносить такие же данные как в этой табл?
PM MAIL   Вверх
Anatom
Дата 23.3.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Это сообщение отредактировал(а) Anatom - 23.3.2009, 22:50

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  4.JPG 158,90 Kb
PM MAIL   Вверх
Данкинг
Дата 23.3.2009, 23:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Anatom @  23.3.2009,  22:48 Найти цитируемый пост)
у меня возникает такая ошибка.

Прочитать сообщение об ошибке пробовал? Получилось? Если нет (судя по всему), то перевожу с китайского: ты пытаешься вставить пустое (NULL значение) в поле, которое не допускает нулевых значений. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 24.3.2009, 09:33 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Данкинг, да они просто не знают даже про онлайн переводчики. А легче ведь задать вопрос на форумах (скопипайстить) и пойти пить пиво, а утром прийти на работу и оппаа, а тут уже всё решили за меня умные парни, а мне типо и париццо не нужно.
На таких форумах как sql.ru и ibase.ru таких пользователей ленивых просто тупо задрачивают (не побоюсь этого слова) и они туда больше не приходят.
PM MAIL   Вверх
Dobermann
Дата 24.3.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @  24.3.2009,  09:33 Найти цитируемый пост)
Данкинг, да они просто не знают даже про онлайн переводчики. А легче ведь задать вопрос на форумах (скопипайстить) и пойти пить пиво, а утром прийти на работу и оппаа, а тут уже всё решили за меня умные парни, а мне типо и париццо не нужно.
На таких форумах как sql.ru и ibase.ru таких пользователей ленивых просто тупо задрачивают (не побоюсь этого слова) и они туда больше не приходят. 

а мы тут как няньки smile  smile 
PM   Вверх
Anatom
Дата 24.3.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет товарищи это не так, вы видили какой од я выкладывал выше, для  вывода информацию в грид из двух табл я использую представление, правда я его сделал в конструкторе, и получаеться что в одну табл я могу заносить №паспорта, а во вторую не могу потому что оно не ключевой поле в этой табл, а в которую вношу оно явл ключем. мне сказали сделать процедуру для того чтобы можно было внести данные из грид сразу в обе табл, но это не помогло(процедуру проверял она работает и получаеться занести данные) а вот чтобы из делфи появляеться такая ошибка, мол я не могу занести пустое значение в табл, но на самом деле я его занес только в одну табл. скрин представления в конструкторе прилогаю

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  5.JPG 157,07 Kb
PM MAIL   Вверх
pseud
Дата 25.3.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Anatom @  24.3.2009,  22:14 Найти цитируемый пост)
Присоединённый файл ( Кол-во скачиваний: 1 )
 5.JPG 157,07 Kb

офф
какие книжки учат давать русские имена таблицам/столбцам??? 
можно не отвечать, лучше сразу сжечь.




--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Frees
Дата 25.3.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



ОФФ
Цитата(Akella @  24.3.2009,  11:33 Найти цитируемый пост)
На таких форумах как sql.ru и ibase.ru таких пользователей ленивых просто тупо задрачивают (не побоюсь этого слова) и они туда больше не приходят.

и они приходят сюда


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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