![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопросы по экспорту и базам данных [D7, XP]
Defort © (2006-11-19 22:10:00)Добрый вечер, господа. Как-то (может кто помнит), меня тут послали, так как посчитали мое знание баз недостаточном, чтобы считать меня достойным разговора. Но с базами, почитав книжку, я разобрался. Теперь у меня новые вопросы:
Вопрос первый.
Мне нужно, чтобы автоматически формировалась таблица График платежей (то есть в течении всего периода действия договора - с начального по конечную дату - каждый первый день месяца производился платеж). Я пытался сначала разбить по дате, потом сосчитать количество строк, поделить на нее всю сумму и разместить по строкам (надеюсь понятно объяснил). У меня никак не получается это сделать. Вообще. Может кто поможет? о_О
Вопрос 2: по экспорту в Эксель. Все работает, но только номер договора он рассматривает как вариантный тип (то есть если я пишу номер 02.03 - он рассматривает как дату, если 17 - как число). Это не есть хорошо, так как я говорю ему рассматривать как строку. Вот мой код:
Sheet.Cells[index,1]:=DataModule1.ADOTable1.Fields.Fields[1].AsString;
Не подскажете, в чем может быть ошибка?
Заранее всех благодарю!
Defort (2006-11-24 22:27:00) [21]
> зачем разбирать дату, а затем снова собирать ее?
Когда я писал IncMonth(days) у меня циклило (days - дата) - посмотри на условие цикла - может оно неправильно
> какая база?
MS Access
Sam Stone (2006-11-24 20:47:00) [22]> Это язык SQL? Я не учил его еще. Буду благодарен за примерный
> код
учи http://cs.ifmo.ru/education/documentation/sql_kg/
> Да, кстати, и с датами правильно сделано?
зачем разбирать дату, а затем снова собирать ее?
> не добавляет
какая база? коммит не помешало бы сделать в некоторых случаях.
Defort (2006-11-24 20:40:00) [23]Да, кстати, и с датами правильно сделано?
Defort (2006-11-24 20:33:00) [24]
> апрос сделать:
> INSERT INTO <Table> ...
> Или вопрос не в этом?
Это язык SQL? Я не учил его еще. Буду благодарен за примерный код
Kolan (2006-11-23 23:00:00) [25]> Вопрос собственно как правильно добавить новые строки
Запрос сделать:
INSERT INTO <Table> ...
Или вопрос не в этом?
Defort (2006-11-23 22:56:00) [26]Вроде с датой разобрался, теперь не глют по крайней мере. Но и не добавляет.
procedure TNewGraphForm.SubKindClick(Sender: TObject);
var i:integer;
summ: real;
days, days2: variant; //начальная и конечная даты
AYear, AMonth, ADay, AYear2, AMonth2, ADay2: Word; //для раскодировки
m: integer;
begin
if SubKind.ItemIndex=0 then
days:=DataModule1.ADOTable1.FieldValues['Дата заключения'];
days2:=DataModule1.ADOTable1.FieldValues['Дата закрытия'];
DecodeDate(days, AYear, AMonth, ADay); Inc(AMonth);
DecodeDate(days2, AYear2, AMonth2, ADay2);
while (AMonth<AMonth2) and(AYear<=AYear2) do
begin
DataModule1.ADOTable3.Insert; //по задумке добавление новой строки
DataModule1.ADOTable3.FieldValues['Дата платежа']:=EncodeDate(AYear, AMonth, ADay);//присваиваение полю Дата платежа текущей даты
DataModule1.ADOTable3.Post; //по задумке принятие изменений
Inc(AMonth);
end;
end;
Вопрос собственно как правильно добавить новые строки. Сенкс.
Anatoly Podgoretsky (2006-11-20 23:04:00) [27]> Defort (20.11.2006 20:20:05) [5]
Решение не соответсвует постановке, а для чего я тебе список функций приводил? Для того, чтобы ты их внимательно посмотрел.
Можешь к ним добавить еще две - DecodeDate и :=
Sam Stone (2006-11-20 21:30:00) [28]> [5] Defort © (20.11.06 20:20)
Читаем описание IncMonth до просветления.
Defort (2006-11-20 20:20:00) [29]В таком виде программу вообще циклит:
var i:integer; {счетчик для цикла}
summ: real; //переменные для заполения автоматически
days: variant;
begin
if SubKind.ItemIndex=0 then
days:=DataModule1.ADOTable1.FieldValues['Дата заключения'];
IncMonth(days);
while days<DataModule1.ADOTable1.FieldValues['Дата закрытия'] do
begin
DataModule1.ADOTable3.Append;
DataModule1.ADOTable3.FieldValues['Дата платежа']:=days;
{DataModule1.ADOTable3.FieldValues['Сумма платежа']:=summ;
DataModule1.ADOTable3.FieldValues['Погашен']:=false;
DataModule1.ADOTable3.FieldValues['Пени']:=0;
DataModule1.ADOTable3.FieldValues['Остаток']:=summ;
Application.MessageBox(PCHar('График платежей создан. Проверьте его правильность и отредактируйте поля в случае надобности'), 'Внимание!', MB_OK); //Выводится ошибка на экран}
DataModule1.ADOTable3.Post;
IncMonth(days);
end;
end;
:(
Anatoly Podgoretsky (2006-11-20 19:44:00) [30]> Defort (20.11.2006 19:24:03) [3]
В месяце не обязательно 30 дней
EncodeDate, IncMonth
Defort (2006-11-20 19:24:00) [31]2EvS
Показываю что деле, только плиз не смеятся. Здесь я пытался сделать только чтобы появилась много строк с отличающимися на 30 дней датами, так как не знаю как сделать, чтобы период разбивался именно по первому дню месяца.
var days, i:integer; {ñ÷åò÷èê äëÿ öèêëà}
summ: real; //ïåðåìåííûå äëÿ çàïîëåíèÿ àâòîìàòè÷åñêè
days2: variant;
begin
if SubKindRadioGroup.ItemIndex=0 then
days2:=DataModule1.ADOTable1.FieldValues['Äàòà çàêëþ÷åíèÿ']+30;
while days2
Sergey13 (2006-11-20 08:37:00) [32]> Вопрос первый.
> надеюсь понятно объяснил
Не особо.
Если платеж проходит автоматически (в чем я лично сомневаюсь), то почему бы каждое первое число не запускать процедуру, где на каждый договор вводить 1 запись с датой и уммой платежа, равной остатку/количество оставшихся месяцев.
EvS (2006-11-19 23:09:00) [33]> Как-то (может кто помнит), меня тут послали
Тут таких не меряно.
> Вопрос первый.
Причем здесь строки,посчитай кол-во месяцев и дели.
Показывай что делал.
> Вопрос 2
Форматировать нужно ячейки Экселя.