|
#1
|
|||
|
|||
MS ACCeSs
Всем доброго времени суток!!
У меня к вам такой вопрос. Когда мы делаем Привязку БД к форме получается мы пишем определенный путь типа C:\ ……\.........\блa.mdb Как сделать так чтобы при переносе папки с программой (вместе с БД) она заработала? Или придется все время переписывать путь нахождения Бд. Во по ходу работы еще возник вопрос)))) Как организовать. Если удоляеш запись из главной таблици что-бы и запись удолялась из дочерней таблици? Последний раз редактировалось SSA, 10.02.2008 в 21:42. |
#2
|
||||
|
||||
Если исползуешь компонент для доступа к базе ADOConnection, то ложеш базу в папку с программой и пишешь 'Data Source=BD.mdb;' без полного указания пути.
Что касается второго вопроса. При построении схемы данных в Access, когда создаешь связь м/у таблицами есть такие пункты как 'обеспечить целостность данных', 'каскадное обновление связанных полей', 'каскадное удаление связанных полей'. Отмечаешь их галочками после чего при удалении из главной таблицы записи, запис будет удаляться из дочерней. |
#3
|
|||
|
|||
В очередной раз всем доброго времени суток!!
При написание возник вот какой вопрос как правильно произвести выборку из таблицы БД вот что имеется но это как то криво работает. Подскажите плиз.!! (надо чтобы остались тока те строки в которых есть такие названия) procedure TProiz.NazFilterChange(Sender: TObject); begin If Length(NazFilter.Text)>0 then DataModule2.ADOTable1.Filtered:=true else DataModule2.ADOTable1.Filtered:=false; DataModule2.ADOTable1.Filter:='Название>'''+NazFil ter.Text+''''; end; И вот еще вопросик есть таблица и 5 столбцами как провести выборку в 4 столбцах по одному параметру и если есть такой парамер чтобы он один остался? Зарание СПС! |
#4
|
||||
|
||||
Тебе тоже доброго времени суток!!
Если у тебя поле название текстовое тогда правильнее будет написать проседуру вот так: Код:
procedure TForm1.NazFilterChange(Sender: TObject); begin If Length(NazFilter.Text)>0 then begin ADOTable1.Filter:='Название like '+#39+NazFilter.Text+#42+#39; ADOTable1.Filtered:=true; end else ADOTable1.Filtered:=false; end; что касаемо нескольки полей, то по идее вот: ADOTable1.Filter:='Название like '+#39+NazFilter.Text+#42+#39+' and Название2 like '+#39+NazFilter.Text+#42+#39+' and Название3 like '+#39+NazFilter.Text+#42+#39+' and Название4 like '+#39+NazFilter.Text+#42+#39; Удачи!! Последний раз редактировалось Appolon, 14.02.2008 в 10:36. |
#5
|
|||
|
|||
Цитата:
Спс очень помогло )))) Вот еще вопросик можно ли в делфи создать отчет и вывести его на печать? Если можно подскажите как!! А то от нашего Любимого препода не добьешься не чего! |
#6
|
||||
|
||||
Цитата:
Да, конечно, же есть такие компоненты как RAVE REPORTS, Fast Reports и.т.д. Я лично больше предпочитаю экспорт отчетов в MS Word или Excel. Мой Вам совет почитайте литературу. Рекомендую: 1. Delphi 7. Хомоненко А., Гофман В., Мещеряков М., Никифоров И. 2. Библия Delphi 2-е изд. Фленов М. 3. Василий Корняков Программирование документов и приложений MS Office в Delphi |
#7
|
||||
|
||||
На счет пути к базе данных. Часто бывает что при использовании диалогов TOpenDialog или TSaveDialog, пути к папке от куда запущен экземпляр, сбиваются, следовательно такой код:
Data Source=BD.mdb уже без сбоя не сработает. Поэтому есть ещё такой верный способ, которым я уже давно пользуюсь: Код:
//****************************************************************************** // Функция возвращает путь директории из которой была запущена программа. Function PrgDir(): String; var szFileName : array[0..49] of char; FilePut: String[255]; szModuleName : array[0..19] of char; iSize : integer; J: integer; //Счетчик begin StrPCopy(szModuleName, 'NameOfModule'); iSize := GetModuleFileName(GetModuleHandle(szModuleName),szFileName, SizeOf(szFileName)); if iSize > 0 then begin FilePut := StrPas(szFileName); FilePut := ExtractFilePath(StrPas(szFileName)); //Проверим функцию... PrgDir := FilePut; end else begin ShowMessage('System dir error!!!'); end; end; Код:
DataModl.ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source='+PrgDir+'DB.mdb ;'; DataModl.ADOConnection.Connected := True; //... И далее активация таблиц и прочии операции Способ действенный, багов пока наблюдать не приходилось. Если придётся дайте знать "Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт |