|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi, ADO и Access
Доброго времени суток!
Народ, я в Дельфи полный чайник, а прогу сделать надо. Вобщем, суть такая. В Акцессе есть БД, состоящая из 3-ёх связанных таблиц: Поставщики->Товары->Приход/Расход. Надо написать в Дельфи прогу, которая будет с этой базой работать. Я добавил на форму DataSource, DBGrid и ADOTable. Файл я с ADO и таблицей связал. В таблице данные отобразил, а вот дальше встал. Нужно, чтобы при двойном щелчке на строку с поставщиком открывалась вторая форма, в которой будет таблица с товарами от этого поставщика. При щелчке на строку с товарами, соответственно, нужна 3-ья форма с приходом и расходом. Что делать??? Хотя бы в общих чертах, чего да как?.. |
#2
|
||||
|
||||
Ну для начала те нужно в событии DBGrid->OnDblClick поцепить процедуру, которая будет открывать новое окно:
Код:
procedure TForm1.DBGrid1DblClick(Sender: TObject); begin Form2.ShowModal; end; Код:
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
|
|||
|
|||
Спасибо, уже разобрался! Правда без SQL. Вроде как работает. Пытаюсь сделать GUI, в частности, победить долбаные скроллы в ДБГриде. ShowScrollBar(DBGrid1.Handle, SB_Vert ,false); как то не устраивает...
|
#4
|
||||
|
||||
У меня тоже такая проблема была, решил вот так!
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#5
|
|||
|
|||
Работает, черт побери! Кстати, вопрос на засыпку: а у этого долбаного DBGrid'a есть свойство, значеним которого является индекс выделенной строки, либо там count'ом надо извращаться? Свойства не нашел...
|
#6
|
||||
|
||||
Если я тебя правильно понял, то так:
Код:
DBGrid1.SelectedIndex; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#7
|
|||
|
|||
Вот эта хрень все-время возвращает ноль, SelectedRows - то же самое.
|
#8
|
||||
|
||||
У меня так:
Код:
Grid.DataSource.DataSet.RecNo; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#9
|
|||
|
|||
Теперь не получается удалить запись. Говорит, что изменение или удаление невозможно. В таблице 'такая-то такая-то' имеются связанные записи. Каким макаром удалять записи из связанных таблиц?.. Как я понял, сначала надо удалить данные из подчиненных таблиц, а потом уже из главной. Только как???
|
#10
|
||||
|
||||
Лично я никогда этим не пользовался, но можно попробывать через Table1.TableLevel;
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#11
|
|||
|
|||
Тогда как можно вытащить ID поставщика из таблицы и ID связанных с ним товаров из другой таблицы? То что, удалять записи сначала надо из дочерней таблицы по ID выбранной записи в родительнской таблице я уверен на 100%.
Последний раз редактировалось Viking, 22.01.2008 в 16:20. |
#12
|
|||
|
|||
>Тогда как можно вытащить ID поставщика из таблицы и ID связанных с ним товаров из другой таблицы?
Либо с помощью фильтра, либо с помощью процедуры поиска locate. |
#13
|
|||
|
|||
Если не сложно, можно кодом. Хотя б примерно. Срок горит нафиг!
|
#14
|
|||
|
|||
Ну я ваще запарился! Разобрался, как удалять из дочерней таблицы:
with Form2.ADOTable1 do begin DisableControls; First; while not Eof do begin Delete; end; EnableControls; end; Все удаляет в дочерних таблицах, все отлично, а вот как только пытаюсь ему сказать, что теперь бы надо удалить и из родительской сразу слетает с ошибкой, что невозможно удалить, т.к. имеются связанные записи в дочереней таблице! ОТКУДА?!?!?! Она же ПУСТАЯ!!! Народ, помогите пожалуйста! Диплом... |