Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.01.2008, 18:15
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию Delphi, ADO и Access

Доброго времени суток!
Народ, я в Дельфи полный чайник, а прогу сделать надо. Вобщем, суть такая. В Акцессе есть БД, состоящая из 3-ёх связанных таблиц: Поставщики->Товары->Приход/Расход. Надо написать в Дельфи прогу, которая будет с этой базой работать. Я добавил на форму DataSource, DBGrid и ADOTable. Файл я с ADO и таблицей связал. В таблице данные отобразил, а вот дальше встал. Нужно, чтобы при двойном щелчке на строку с поставщиком открывалась вторая форма, в которой будет таблица с товарами от этого поставщика. При щелчке на строку с товарами, соответственно, нужна 3-ья форма с приходом и расходом. Что делать??? Хотя бы в общих чертах, чего да как?..
Ответить с цитированием
  #2  
Старый 21.01.2008, 00:12
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Подмигивание

Ну для начала те нужно в событии DBGrid->OnDblClick поцепить процедуру, которая будет открывать новое окно:
Код:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
Form2.ShowModal;
end;
В событии OnCreate которого ты сделаешь процедуру определения выбраного поставщика с последующим его открытием и выборкой в БД с помощью SQL-запроса.
Код:
procedure TForm2.FormCreate(Sender: TObject);
var
Post :string;
begin
Post:=Form1.DBGrid1.DataSource.DataSet.Fields[1].AsString; // напр (поле 1 это поставщик)
with Query do
Query.Close;
Query.SQL.Clear;
Query.SQL.AddObject('SELECT * FROM (твоя база) WHERE (имя поля) LIKE '+Post+'');
Query.Open;
end;
Дальше все действия аналогичны (только формы меняются)
Удачи...
ЗЫ: Может че-то упустил ... очень спешил
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 21.01.2008 в 00:24. Причина: Дополнение к ответу
Ответить с цитированием
  #3  
Старый 21.01.2008, 01:31
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Спасибо, уже разобрался! Правда без SQL. Вроде как работает. Пытаюсь сделать GUI, в частности, победить долбаные скроллы в ДБГриде. ShowScrollBar(DBGrid1.Handle, SB_Vert ,false); как то не устраивает...
Ответить с цитированием
  #4  
Старый 21.01.2008, 11:59
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Восклицание

У меня тоже такая проблема была, решил вот так!
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #5  
Старый 21.01.2008, 13:24
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Работает, черт побери! Кстати, вопрос на засыпку: а у этого долбаного DBGrid'a есть свойство, значеним которого является индекс выделенной строки, либо там count'ом надо извращаться? Свойства не нашел...
Ответить с цитированием
  #6  
Старый 21.01.2008, 14:35
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Если я тебя правильно понял, то так:
Код:
 DBGrid1.SelectedIndex; 
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #7  
Старый 21.01.2008, 14:41
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Вот эта хрень все-время возвращает ноль, SelectedRows - то же самое.
Ответить с цитированием
  #8  
Старый 21.01.2008, 14:51
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

У меня так:
Код:
Grid.DataSource.DataSet.RecNo; 
все работает нормально (номер строки возвращается)
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #9  
Старый 22.01.2008, 01:42
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Теперь не получается удалить запись. Говорит, что изменение или удаление невозможно. В таблице 'такая-то такая-то' имеются связанные записи. Каким макаром удалять записи из связанных таблиц?.. Как я понял, сначала надо удалить данные из подчиненных таблиц, а потом уже из главной. Только как???
Ответить с цитированием
  #10  
Старый 22.01.2008, 09:35
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Лично я никогда этим не пользовался, но можно попробывать через Table1.TableLevel;
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #11  
Старый 22.01.2008, 16:17
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Тогда как можно вытащить ID поставщика из таблицы и ID связанных с ним товаров из другой таблицы? То что, удалять записи сначала надо из дочерней таблицы по ID выбранной записи в родительнской таблице я уверен на 100%.

Последний раз редактировалось Viking, 22.01.2008 в 16:20.
Ответить с цитированием
  #12  
Старый 22.01.2008, 16:21
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

>Тогда как можно вытащить ID поставщика из таблицы и ID связанных с ним товаров из другой таблицы?

Либо с помощью фильтра, либо с помощью процедуры поиска locate.
Ответить с цитированием
  #13  
Старый 22.01.2008, 17:18
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Если не сложно, можно кодом. Хотя б примерно. Срок горит нафиг!
Ответить с цитированием
  #14  
Старый 23.01.2008, 02:50
Viking Viking вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 8
Репутация: 10
По умолчанию

Ну я ваще запарился! Разобрался, как удалять из дочерней таблицы:
with Form2.ADOTable1 do
begin
DisableControls;
First;
while not Eof do
begin
Delete;
end;
EnableControls;
end;

Все удаляет в дочерних таблицах, все отлично, а вот как только пытаюсь ему сказать, что теперь бы надо удалить и из родительской сразу слетает с ошибкой, что невозможно удалить, т.к. имеются связанные записи в дочереней таблице! ОТКУДА?!?!?! Она же ПУСТАЯ!!!
Народ, помогите пожалуйста! Диплом...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter