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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.02.2008, 19:30
SSA SSA вне форума
Прохожий
 
Регистрация: 04.02.2008
Сообщения: 13
Репутация: 10
По умолчанию MS ACCeSs

Всем доброго времени суток!!
У меня к вам такой вопрос. Когда мы делаем Привязку БД к форме получается мы пишем определенный путь типа C:\ ……\.........\блa.mdb Как сделать так чтобы при переносе папки с программой (вместе с БД) она заработала? Или придется все время переписывать путь нахождения Бд.

Во по ходу работы еще возник вопрос))))
Как организовать. Если удоляеш запись из главной таблици что-бы и запись удолялась из дочерней таблици?

Последний раз редактировалось SSA, 10.02.2008 в 21:42.
Ответить с цитированием
  #2  
Старый 11.02.2008, 08:52
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Если исползуешь компонент для доступа к базе ADOConnection, то ложеш базу в папку с программой и пишешь 'Data Source=BD.mdb;' без полного указания пути.
Что касается второго вопроса. При построении схемы данных в Access, когда создаешь связь м/у таблицами есть такие пункты как 'обеспечить целостность данных', 'каскадное обновление связанных полей', 'каскадное удаление связанных полей'. Отмечаешь их галочками после чего при удалении из главной таблицы записи, запис будет удаляться из дочерней.
Ответить с цитированием
  #3  
Старый 13.02.2008, 22:46
SSA SSA вне форума
Прохожий
 
Регистрация: 04.02.2008
Сообщения: 13
Репутация: 10
По умолчанию

В очередной раз всем доброго времени суток!!

При написание возник вот какой вопрос как правильно произвести выборку из таблицы БД вот что имеется но это как то криво работает. Подскажите плиз.!! (надо чтобы остались тока те строки в которых есть такие названия)

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  
Старый 14.02.2008, 00:34
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Тебе тоже доброго времени суток!!

Если у тебя поле название текстовое тогда правильнее будет написать проседуру вот так:
Код:
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;
,где #39-это апостроф, а #42-это звездочка.

что касаемо нескольки полей, то по идее вот:

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  
Старый 14.02.2008, 22:00
SSA SSA вне форума
Прохожий
 
Регистрация: 04.02.2008
Сообщения: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Appolon
Тебе тоже доброго времени суток!!

Если у тебя поле название текстовое тогда правильнее будет написать проседуру вот так:
Код:
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;
,где #39-это апостроф, а #42-это звездочка.

что касаемо нескольки полей, то по идее вот:

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;


Удачи!!

Спс очень помогло ))))




Вот еще вопросик можно ли в делфи создать отчет и вывести его на печать? Если можно подскажите как!! А то от нашего Любимого препода не добьешься не чего!
Ответить с цитированием
  #6  
Старый 15.02.2008, 09:38
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Цитата:
Сообщение от SSA
Вот еще вопросик можно ли в делфи создать отчет и вывести его на печать? Если можно подскажите как!! А то от нашего Любимого препода не добьешься не чего!


Да, конечно, же есть такие компоненты как RAVE REPORTS, Fast Reports и.т.д.
Я лично больше предпочитаю экспорт отчетов в MS Word или Excel.
Мой Вам совет почитайте литературу.
Рекомендую:
1. Delphi 7. Хомоненко А., Гофман В., Мещеряков М., Никифоров И.
2. Библия Delphi 2-е изд. Фленов М.
3. Василий Корняков Программирование документов и приложений MS Office в Delphi
Ответить с цитированием
  #7  
Старый 22.02.2008, 14:51
Аватар для XIO
XIO XIO вне форума
Новичок
 
Регистрация: 06.12.2007
Сообщения: 77
Репутация: 32
По умолчанию

На счет пути к базе данных. Часто бывает что при использовании диалогов 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;
//... И далее активация таблиц и прочии операции

Способ действенный, багов пока наблюдать не приходилось. Если придётся дайте знать
__________________
"Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter