Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2009, 10:51   #1
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию Создание 3 базы из 2-х

Привет Всем!
есть такая задача. 1-я база (Table_osnova), 2-я (Table_famili). они связаны по индексу id_klient. на 1-ю базу накладываю фильтр и из 2-й выбираю записи удовлетворяющие условию. вот этот момент никак не могу сделать.
код процедуры:
Цитата:
var ab_nomer: String;
n: Integer;
ab_dolg: String;
ab_gos: String;
begin
Table_osnova.Filtered:= False;
Table_osnova.Filter:= 'Data_isp_pro>'''+'01.01.2001'+'''' +' and ' +'Date_zakr_ab<'''+'01.01.2001'+''' ';
//'Data_isp_pro<''';
Table_osnova.Filtered:= True;
Table_otvet.Close;
Table_otvet.Active:= False;
Table_otvet.Exclusive:= True;
Table_otvet.EmptyTable;
Table_otvet.Active:= True;
// Table_osnova.First;
While not Table_osnova.Eof do begin
ab_nomer:= Table_osnova.FieldByName('Id_klient ').AsString;
ab_dolg:= Table_osnova.FieldByName('Summa_dol g_isk').AsString;
ab_gos:= Table_osnova.FieldByName('Summa_gos ').AsString;
spisok_ab:= '';
Table_famili.First;
for n:= 1 to Table_famili.RecordCount do begin
if Table_famili.FieldByName('Otvetcik' ).AsString = 'Да' Then
begin
fio_ab:= Table_famili.FieldByName('Family'). AsString;
name_ab:= Table_famili.FieldByName('Name').As String;
otc_ab:= Table_famili.FieldByName('Otcestvo' ).AsString;
spisok_ab:=spisok_ab+Trim(fio_ab)+' '+Trim(name_ab)+' '+Trim(otc_ab);
end;
if n < Table_famili.RecordCount Then
spisok_ab:= spisok_ab + ', ';
Table_famili.Next;
end;
Table_osnova.Next;
Table_otvet.Edit;
Table_otvet.Append;
Table_otvet.FieldByName('Id_klient' ).AsString:=ab_nomer;
Table_otvet.FieldByName('Spisok_FIO ').AsString:=spisok_ab;
Table_otvet.Post;
// Table_otvet.Close;
end;
Table_podpis.Filtered:= False;
Table_podpis.Filter:= 'Kod=3';
Table_podpis.Filtered:= True;
ZAYAVA.ShowReport;
//Table_osnova.Filtered:= False;
Table_otvet.Active:= False;
Table_otvet.Exclusive:= False;
перед записью в 3-ю базу, ее надо очистить.
3-я база - Table_otvet
bosston вне форума Ответить с цитированием
Старый 21.04.2009, 11:49   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

не очень понятно - что же не можешь сделать?
тебе в отчет нужно вывести одну большую строчку, слепленную из всех ФИО соответствующих условию отбора?

кстати, вот этот код тяжелый
Код:
Table_famili.RecordCount
лучше цикл запускать так
Код:
while not(Table_famili.EOF) do begin
....
Table_famili.Next;
end;
soleil@mmc вне форума Ответить с цитированием
Старый 21.04.2009, 13:11   #3
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

1. не проходит цикл во второй базе. не создаются строки
2. при запуске из оболочки дельфи не освобождается таблица списка.
bosston вне форума Ответить с цитированием
Старый 21.04.2009, 14:14   #4
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

все заработало, была моя шибка при начале работы, неправильно указал базу основную.
теперь остался 2-й вопрос.
bosston вне форума Ответить с цитированием
Старый 21.04.2009, 14:20   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а где в коде хотя бы намек на то, что ты собираешься ее ("таблицу списка") "освободить"?
soleil@mmc вне форума Ответить с цитированием
Старый 21.04.2009, 14:29   #6
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

Цитата:
Table_otvet.Close;
Table_otvet.Active:= False;
Table_otvet.Exclusive:= True;
Table_otvet.EmptyTable;
Table_otvet.Active:= True;
ругается на
Цитата:
Table_otvet.EmptyTable;
говорит таблица занята. Кагда запускается экзешник, такого нет.
bosston вне форума Ответить с цитированием
Старый 21.04.2009, 14:43   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Note

Deletion of records can fail if the user lacks sufficient privileges to perform the delete operation.

А как у тебя с правами на удаление данных?
soleil@mmc вне форума Ответить с цитированием
Старый 21.04.2009, 14:56   #8
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

все по умолчанию, я ничего не менял
bosston вне форума Ответить с цитированием
Старый 21.04.2009, 14:59   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

чота мне кажется, что первая строчка этого кода лишняя

Код:
Table_otvet.Edit;
Table_otvet.Append;
soleil@mmc вне форума Ответить с цитированием
Старый 21.04.2009, 15:05   #10
bosston
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 32
По умолчанию

здесь все работает, мне надо очистить эту таблицу, перед тем как туда добавлять записи. т.е. она формируется заново, когда нажимаем кнопку сформировать
bosston вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание базы данных st1mUA Microsoft Office Excel 8 23.03.2009 09:47
динамическое создание базы Bayazet БД в Delphi 4 18.03.2009 14:01
создание файла базы Черничный БД в Delphi 19 05.12.2008 10:26
Создание базы данных TECHNIC SQL, базы данных 5 28.07.2008 15:23
Создание базы данных emfw БД в Delphi 5 04.03.2007 02:46