1

(5 replies, posted in Reports)

sparrow wrote:

Это конечно не шахматы, но решать проблемные вопросы вслепую ... неа.

Все, что могу посоветовать вам это для начала проверить какие данные (в каком порядке данные) передаются в Репорт.
Когда вы увидите, что результат тот, ковыряйте Репорт.

запрос на таблицу BDp

SQLQuery('SELECT BDp.Id, BDp.DateNN AS DATEDOLJ, strftime("%d.%m.%Y",BDp.DateNN), strftime("%d.%m.%Y",BDp.BDpEEnd), BDp.Name, FROM BDp WHERE BDp.id_Client='+IntToStr(Form1.gridClient.dbItemID), BDp);

запрос на таблицу Dogovor

SQLQuery('SELECT Dogovor.DateN AS DATEDOGOVOR, strftime("%d.%m.%Y г.",Dogovor.DateN), strftime("%d.%m.%Y г.",Dogovor.DateEnd), Dogovor.Prikaz, strftime("%d.%m.%Y г.",Dogovor.PrikazDate), Dogovor.PrikazNumber, DogovorType.DogovorType FROM Dogovor LEFT JOIN DogovorType ON Dogovor.id_DogovorType=DogovorType.id WHERE Dogovor.id_Client='+IntToStr(Form1.gridClient.dbItemID), Dogovor);
    

порядок передается для каждой в отдельности таблицы верный, по дате возрастание от начальной даты (BDp.DateNN, Dogovor.DateN), если я сделаю связь между ними как мне в запросе правильный порядок задать?

2

(5 replies, posted in Reports)

sparrow wrote:

Добрый,

начало понятно а потом нет ).
Но это хорошо. Хорошо, что вы сами понимаете.

Вопрос: а что вам мешает связать все таблицы Dogovor, BDp (Client)? Связать не значит выводить все данные, а только нужные вам.
И фильтровать тогда можно по любым критериям. Человек, специалист, инженер, даты. Опись, протокол, сдал, принял.)

Вы ж все равно формируете SQL запросом в скрипте. JOIN таблицы между собой и вперед.

Да вот даже не знаю на счет связи с таблицей, но я честно сказать даже не пробовал этот вариант (но в уме держу), просто в отчете в строке с договором первая и вторая колонка объеденные между собой, а в строке с должностью эти две колонки разделены между собой...
поэтому если делать связь и через условие если, то в строке с договором будет один столбец пустой.

Щас ковыряю FastReport Pascal

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
   MasterData6.Visible := <Dogovor."DateN"> <= <BDp."DateNN">;
   MasterData5.Visible := <Dogovor."DateN"> > <BDp."DateNN">;           
end;


этот код, правильно понимает какие строки надо задействовать, только вот он их вообще убирает. Мне бы не убрать а передвинуть в нужном порядке

3

(5 replies, posted in Reports)

Здравствуйте, может кто помочь в решении проблемы.

Есть две таблицы Dogovor, BDp (между собой они не связаны, но связанны с главной таблицей Client)
в таблицу Dogovor заносятся данные по договору человека который заключается на определенный срок, две даты к примеру с 01.01.2021 по 12.12.2021
в таблицу BDp заносятся данные по должности человека которую он занимал в периоде дат, должность к примеру Специалист две даты с 01.01.2021 по 06.06.2021

Dogovor
DateN             DateEnd
01.01.2021    12.12.2021
13.12.2021    31.12.2021

BDp
Name                DateNN         DateEEnd
Специалист     01.01.2021    06.2021
Инженер          07.06.2021    12.12.2021
Специалист    13.12.2021     31.12.2021

Соответственно чтобы автоматизировать и выгружать весь список таблицы BDp для человека в отчет... Я в отчете создал Subreport4 куда поместил MasterData5 с DataSet BDp, также в Subreport4 поместил MasterData6 с DataSet Dogovor.
Всё выводит верно, сначала все строки с таблицы BDp потом все строки с таблицы Dogovor. Но я хочу фильтровать строки, чтобы отчет получился примерно так:

01.01.2021    12.12.2021
Специалист     01.01.2021    06.2021
Инженер          07.06.2021    12.12.2021
13.12.2021    31.12.2021
Специалист    13.12.2021     31.12.2021

Я думаю это надо делать через code в fastreport, но я даже не имею примера для образца как это сделать

можно в отчете MasterData вписать условие

 [IIF(<Dogovor."DateN"><='<BDp."DateNN">', <Dogovor."DateN">, <BDp."Name">)]

но так как таблицы не связанны между собой не знаю как быть...

в отчет все данные подгружаются скриптом

4

(11 replies, posted in Russian)

Было бы неплохо если бы вы приложили проект или пример.
Попробуйте запрос привести к виду

SELECT strftime("%d.%m.%Y -",MIN(Boev.BoevDate)) AS PeriodDate,
strftime("%d.%m.%Y г.;",MAX(Boev.BoevDateEnd)) AS PeriodDateEnd, 
BoevName.BoevName
...

Помогло. Спасибо большое.
Получается MIN MAX нужно перед преобразования в нужный формат даты…

5

(11 replies, posted in Russian)

Запрос бывает отбрасывает несколько строк, тем самым не получает Взять первую дату и конечную для определённого наименования. И я не могу сообразить как правильно оформить запрос, думаю сделать ещё подзапрос… или пробовать group by только для наименования делать, а на даты сделать запрос с min max where наименование=наименованию

6

(11 replies, posted in Russian)

sibprogsistem wrote:
eugene1995miroshnikov wrote:

Таблица BoevName связана с Boev, таблица Boev связана с основной Таблицей Client

BoevName - комбобокс для выбора значения

Даты в одной таблице?

Да

7

(11 replies, posted in Russian)

Таблица BoevName связана с Boev, таблица Boev связана с основной Таблицей Client

BoevName - комбобокс для выбора значения

8

(11 replies, posted in Russian)

Здравствуйте, помоги пожалуйста правильно составить sql запрос

SELECT MIN(strftime("%d.%m.%Y -",Boev.BoevDate)) AS PeriodDate, MAX(strftime("%d.%m.%Y г.;",Boev.BoevDateEnd)) AS PeriodDateEnd, BoevName.BoevName FROM Boev LEFT JOIN BoevName ON Boev.id_BoevName=BoevName.id WHERE Boev.id_Client='+IntToStr(Form1.gridClient.dbItemID)+' GROUP BY BoevName.BoevName

Что то у меня не получается задуманное...

Имеется TableGrid1 с столбцами BoevName.BoevName, Boev.BoevDate, Boev.DateEnd к примеру со следующими значениями

BoevName.BoevName   Boev.BoevDate   Boev.BoevDateEnd
Пример                           01.01.2021         02.02.2021
Пример                           01.03.2021         02.03.2021
Пример2                         04.04.2021         02.05.2021
Пример2                         04.05.2021         05.05.2021
Пример3                         04.04.2021         05.05.2021
Пример3                         04.04.2021         05.05.2021



после выполнения sql запроса результат должен быть
BoevName.BoevName   Boev.BoevDate   Boev.BoevDateEnd
Пример                           01.01.2021         02.03.2021     
Пример2                         04.04.2021         05.05.2021     
Пример3                         04.04.2021         05.05.2021       

по столбцу BoevName.BoevName все отлично, группируют повторяющие и выводит одно наименование, но как мне правильно вывести дату начальную и конечную для одного наименования?

вообщем то затея такая.. посчитать два столбца даты в таблице и в идеале красиво вывести информацию в edit.
1. Есть таблица Poslu, в таблице два поля (типа Дата) PosluDate, PosluDateEnd
в поле PosluDate всегда заносится начальная дата (пример: 01.07.2021)
в поле PosluDateEnd всегда заносится конечная дата (пример: 04.07.2021)
даты могут быть с перерывами (пример: 1)11.01.2021-11.02.2021 2)11.04.2021-11.05.2021)
и так далее... строк может быть много с периодами дат, последняя строка поле PosluDateEnd может быть пустым, в таком случае этой строке и этому полю задается текущая дата.
2. Посчитать все периоды дат и просчитать либо просто общее количество дней и потом разбивать на года, месяца, дни.. либо каждую строку разбивать на года, месяца, дни и потом складывать с другими строками.
Я думаю как это лучше сделать, возможно ли в массив загнать и посчитать, а может как то иначе... пока не могу сообразить
Может кто помочь?

На данный момент реализовано по одной нажатой в таблице строке просчет периода и вывода в года, месяца, дни в edit (все прекрасно работает)

procedure frmClient_gridPoslu_OnCellClick (Sender:  TObject; ACol, ARow: Integer; Action: string);
var
years, months, days: integer;
    monthsTotal: integer;
    minDate: TDateTime;
    i, c: integer;
    DD, MM, YY: word;
    date1, date2:  TDateTime;
begin

frmClient.gridPoslu.BeginUpdate;
frmClient.Edit4.Clear;
    if frmClient.gridPoslu.Cells[0, frmClient.gridPoslu.SelectedRow] = '' then date1:= (strtodate(DateToStr(Now))) else date1:= (strtodate(frmClient.gridPoslu.Cells[0, frmClient.gridPoslu.SelectedRow]));
    if frmClient.gridPoslu.Cells[1, frmClient.gridPoslu.SelectedRow] = '' then date2:= (strtodate(DateToStr(Now))) else date2:= (strtodate(frmClient.gridPoslu.Cells[1, frmClient.gridPoslu.SelectedRow]));

   date1 := trunc(date1);
   date2 := trunc(date2);


    years := YearsBetween(date1, date2);
    monthsTotal := MonthsBetween(date1, date2);
    months := monthsTotal - (years * 12);

    if date1 > date2 then minDate := date2 else minDate := date1;

    date1 := IncMonth(minDate, monthsTotal);
    days := DaysBetween(date1, date2);

    frmClient.Edit4.Text := 'выводим период ' +IntToStr(years)+ StrYears(years)+ IntToStr(months)+ StrMonths(months)+ IntToStr(days)+ StrDays(days);

  frmClient.gridPoslu.EndUpdate;
end;

функция вывода года

function StrYears(iYear: integer): string;
var
  s: string;
  sYear: string;
  i: integer;
begin
  result := ' лет ';
  if (iYear > 4) and (iYear < 21) then exit;
  sYear := IntToStr(iYear);
  s := Copy(sYear, Length(sYear), 1);
  i := StrToInt(s);
  case i of
    1: result := ' год ';
    2, 3, 4: result := ' года ';
  end;
end;

функция вывода месяца

function StrMonths(iMonth: integer): string;
begin
  Result:= ' месяцев ';
  case iMonth of
    1: Result:= ' месяц ';
    2, 3, 4: Result:= ' месяца ';
  end;
end;

функция вывода дней

function StrDays(iDay: integer): string;
begin
  Result:= ' дней ';
  case iDay of
    1, 21, 31: Result:= ' день ';
    2, 3, 4, 22, 23, 24: Result:= ' дня ';
  end;
end;

10

(2 replies, posted in Russian)

не разумная идея.
решил проблему фильтром для таблицы.
на кнопку добавил фильтр для таблицы

procedure Form1_Button33_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form1.gridClient.dbFilter := '(ClientStatus.ClientStatus="a") OR (ClientStatus.ClientStatus="b")';
Form1.gridClient.dbUpdate;
end;

на кнопку поиска убрал фильтр

procedure Button32_OnClick (Sender: TObject; Action: string);
begin
Form1.gridClient.SelectedRow:=-1;
if Form1.gridClient.dbFilter <> '' then Form1.gridClient.dbFilter := '';
end;

11

(2 replies, posted in Russian)

Привет всем.
Как скриптом через кнопку передать в miltiselected combobox данные
к примеру multiComboBox - компонент участвует в поиске по таблице. Есть значение (a,b,c) и id (1,2,3) соответственно
Есть необходимость с помощью кнопки передать значение в multiComboBox, к примеру выбрать сразу два значения a.b и отфильтровать таблицу по этим значениям

12

(2 replies, posted in Russian)

Необходимо заменить все записи где есть %m на %m.%YYYY
Но теперь есть беда, есть окончание в текущем году, он берет всех под одну гребенку кроме следующего месяца

13

(2 replies, posted in Russian)

Кажется что то у меня получилось в вычислительном поле, не правильно формировал запрос…
Надо было соединить два запроса что я выше писал и получаем вот так

(SELECT
CASE
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+2 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+3 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+4 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+5 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+6 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+7 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+8 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+9 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+10 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+11 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+12 month') = strftime('%m', DateName) THEN 12    
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+2 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+3 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+4 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+5 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+6 month') = strftime('%m', DateName) THEN 6
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+2 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+3 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+4 month') = strftime('%m', DateName) THEN 4
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) THEN 1
    WHEN strftime('%YYYY', 'now') = strftime('%YYYY', DateName) THEN 0
    WHEN strftime('%m', 'now') = strftime('%m', DateName) THEN 2
    ELSE NULL
END AS dateofcontracts 
 FROM Contracts WHERE Client.id=Contracts.id_Client ORDER BY Contracts.ContractsDateEnd DESC)

Щас буду тестить полностью

14

(2 replies, posted in Russian)

Здравствуйте Уважаемые форумчане
не удается решить проблему с вычислительным полем, а может даже лучше это сделать в скрипте
суть такова, есть две таблицы client, contracts
client - в этой таблице основные данные о заказчике (является родителем contracts)
contracts - находятся данные данные о заказчике типо какой контракт, с какого времени, по какое время

в самой таблице client сделал вычислительное поле для вычисления последней записи с таблицы contracts, а именно окончание контракта и все прекрасно работает

(SELECT IFNULL(strftime('%d.%m.%Y', ContractsDateEnd),"укажите дату") FROM Contracts WHERE Client.id=Contracts.id_Client ORDER BY Contracts.ContractsDateEnd DESC)

появилась нужда в выделение строк тех клиентов у кого подходит конец контракта по договору, а именно за период 12 месяцев, 6 месяцев, 4 месяца, 1 месяц, в текущем году, в текущем месяце... не могу сообразить как это правильно реализовать... сначала пошел методом вычислительного поля

CASE
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+2 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+3 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+4 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+5 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+6 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+7 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+8 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+9 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+10 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+11 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+12 month') = strftime('%m', DateName) THEN 12    
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+2 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+3 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+4 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+5 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+6 month') = strftime('%m', DateName) THEN 6
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+2 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+3 month') = strftime('%m', DateName) AND strftime('%m', 'now', '+4 month') = strftime('%m', DateName) THEN 4
    WHEN strftime('%m', 'now', '+1 month') = strftime('%m', DateName) THEN 1
    WHEN strftime('%YYYY', 'now') = strftime('%YYYY', DateName) THEN 0
    WHEN strftime('%m', 'now') = strftime('%m', DateName) THEN 2
    ELSE NULL
END 

ничего не вышло, даже добавлял в этом вычислительное поле разные условия (типо FROM Contracts WHERE Client.id=Contracts.id_Client ORDER BY Contracts.ContractsDateEnd DESC))... но мог где-то ошибиться

Далее пробовал скриптом

procedure Form1_gridClient_OnChange (Sender: string);
var
   i, c, q, r, d, a, year, Month12, Month6, Month4, Month1, nowMonth: integer;
   iToday, iTomorrow: integer;
   sCell: string;
   sCellContr: string;
   DD, MM, MMMM, YY, YYNow: word;
   dtBirth: TDateTime;
   nextMonth: TDateTime;
   vi: integer;
   Contr: TDateTime;

begin
Form1.gridClient.BeginUpdate;

    r := 0;
    q := 0;
    d := 0;
    a := 0;
    year := 0;
    Month12 := 0;
    Month6 := 0;
    Month4 := 0;
    Month1 := 0;
    nowMonth := 0;

  c := Form1.gridClient.RowCount - 1;
    for i := 0 to c do
    begin

        sCellContr := Form1.gridClient.Cells[16,i];
        if ValidDate(sCellContr) then
        begin
            DecodeDate(Now, YYNow, MM, DD);
            DecodeDate(StrToDate(sCellContr), YY, MM, DD);;
            Contr := EncodeDate(YY, MM, DD);
            Contr := Trunc(Contr);

            if (Trunc(Now) - Contr) <= 25 then
            begin
                Form1.gridClient.Cell[16,i].Color := clSilver;
                Inc(year);
            end;            
         end;

        end;
    end;

    Form1.Button5.Caption:= '12 месяцев (' +IntToStr(Month12)+ ')';
    Form1.Button6.Caption:= '6 месяцев (' +IntToStr(Month6)+ ')';
    Form1.Button7.Caption:= '4 месяца (' +IntToStr(Month4)+ ')';
    Form1.Button10.Caption:= '1 месяц (' +IntToStr(Month1)+ ')';
    Form1.Button8.Caption:= 'в текущем году (' +IntToStr(year)+ ')';
    Form1.Button11.Caption:= 'в ' +MonthName(Date())+ ' (' +IntToStr(nowMonth)+ ')';

     Form1.gridClient.EndUpdate;
end;      

В итоге скрипт закрашивает столбец, но не учитывает год. Тоесть я указал <=25 он сравнивает только дни...

Кто может навести в правильное русло как сделать сравнение с сегодняшней датой с датой в столбец и закрасить эту строку, при условии что этот сравниваемый столбец должен быть либо в течение 12 месяцев, либо 6 месяцев, либо 4 месяцев, либо 1 месяца, либо в текущем году, либо в текущем месяце.

Например: 29.06.2021 -  текущая дата;  в столбце дата=29.12.2021 (тоесть эта дата попадает под 12 месяцев, под 6 месяцев и под текущий год);

Прошу Вашей помощи в правильности составления кода, бьюсь три дня, результатом никак не доволен...

15

(2 replies, posted in Russian)

derek wrote:

Привет,
Посмотрите приложение.
1. excelimport.xls - это пример форматирования даты в EXCEL.
2. csvimport.csv - это пример форматирования даты в файле CSV.
3. screenshot1.jpg показывает, как нужно настроить импорт.
4. screenshot2.jpg показывает ваши данные после того, как они были импортированы.
С уважением,
Derek.

Вроде получилось, завтра проверю у себя на рабочем месте.
Я так уже делал только формат ставил 2021.06.10 а получается надо было 2021-06-10

Спасибо огромное @Derek

16

(2 replies, posted in Russian)

Здравствуйте, подскажите как правильно настроить формат даты в excel чтобы без проблем импортировать в базу данных SQLite?
Имеется DateTimePicker формат стоит dd.MM.yyyy
В экселе уже разными способами ставлю формат даты, не получается импортировать

date1:= (strtodate(frmClient.gridPoslu.Cells[0, frmClient.gridPoslu.SelectedRow]));
date2:= (strtodate(frmClient.gridPoslu.Cells[1, frmClient.gridPoslu.SelectedRow]));

Я про ‘Склонение фамилий, имен и отчеств по падежам Библиотека функций‘

vovka3003 wrote:

А что запрещает использовать в MVD готовые решения?

По-моему на delphikingdom лучшая(с стороны правильности склонения) что мне встречалась библиотека для склонения со всеми пояснениями... Если Вы окажите помощь каким образом можно использовать ее в MVD, Вам будет благодарен не один человек..)
Или указать ещё лучшее решение в правильности склонения чем в этой библиотеке

vovka3003 wrote:

А смысл, если есть готовое (и даже бесплатное) строить очередной велик..?

Я так понимаю речь о том чтобы использовать в MVD

21

(2 replies, posted in Russian)

Для того чтобы задать какие-то условия в дату, я использую через функцию в которой добавляю через CASE results
Это что касается праздничных дней.. Пример не готов сейчас предоставить, воспользуйтесь поиском по слову CASE

DriveSoft wrote:

Попробуйте так

function DateDiff(date1, date2: TDateTime): string;
var
    years, months, days: integer;
    monthsTotal: integer;

    minDate: TDateTime;
    i, c: integer;
    DD, MM, YY: word;
begin
   date1 := trunc(date1);
   date2 := trunc(date2);


    years := YearsBetween(date1, date2);
    monthsTotal := MonthsBetween(date1, date2);
    months := monthsTotal - (years * 12);

    if date1 > date2 then minDate := date2 else minDate := date1;

    date1 := IncMonth(minDate, monthsTotal);
    days := DaysBetween(date1, date2);

    result := 'Days:' + IntToStr(days)+', Months:'+IntToStr(months)+', Years:'+IntToStr(years);
end;

Но не уверен, что результат на 100% правильный.
Есть ньюанс для подсчета лет
http://docwiki.embarcadero.com/Librarie … arsBetween

Спасибо огромное... Как мне правильно использовать функцию, если мне необходимо получить данные по нажатию в TableGrid на n-строку и вывести в Label?
В TableGrid используется таблица Poslu, в таблице две колонки типа Дата PosluDate (начальная дата) PosluDateEnd (конечная дата)
в TableGrid событие OnCellClick

Мой код:

procedure frmClient_gridPoslu_OnCellClick (Sender:  TObject; ACol, ARow: Integer; Action: string);
var
years, months, days: integer;
    monthsTotal: integer;

    minDate: TDateTime;
    i, c: integer;
    DD, MM, YY: word;

date1, date2:  TDateTime;
begin

frmClient.gridPoslu.BeginUpdate;
    date1:= SQLExecute('SELECT PosluDate FROM Poslu WHERE id='+IntToStr(frmClient.gridPoslu.dbItemID));
    date2:= SQLExecute('SELECT PosluDateEnd FROM Poslu WHERE id='+IntToStr(frmClient.gridPoslu.dbItemID));

date1 := trunc(date1);
   date2 := trunc(date2);

    years := YearsBetween(date1, date2);
    monthsTotal := MonthsBetween(date1, date2);
    months := monthsTotal - (years * 12);

    if date1 > date2 then minDate := date2 else minDate := date1;

    date1 := IncMonth(minDate, monthsTotal);
    days := DaysBetween(date1, date2);

    frmClient.Label7.Caption := 'Days:' + IntToStr(days)+', Months:'+IntToStr(months)+', Years:'+IntToStr(years);
    frmClient.gridPoslu.EndUpdate;
end;

Получаю ошибку could not convert variant of type (unicodestring) into type (double)

Если заменяю

    
date1:= SQLExecute('SELECT PosluDate FROM Poslu WHERE id='+IntToStr(frmClient.gridPoslu.dbItemID));
date2:= SQLExecute('SELECT PosluDateEnd FROM Poslu WHERE id='+IntToStr(frmClient.gridPoslu.dbItemID));

На

    date1:= frmClient.DateTimePicker2.DateTime;
    date2:= frmClient.DateTimePicker5.DateTime;

То все хорошо и результат верный... но как сделать не через DateTimePicker?

23

(7 replies, posted in Russian)

Patriot10200 wrote:

Пробовал, не работает(

eugene1995miroshnikov wrote:

Как вариант назначить начальное значение для колонки в таблице, по типу задать 000001

Вот пример от DriveSoft http://myvisualdatabase.com/forum/viewtopic.php?id=1088

24

(7 replies, posted in Russian)

Как вариант назначить начальное значение для колонки в таблице, по типу задать 000001

Проблема не решена...
думаю проблема из-за отсутствия методов в mvd

id:= DayOf(d);
im:= MonthOf(d)-1;
iy:= YearOf(d);

Кто нибудь сталкивался с подсчетом количества n-лет n-месяцев n-дней? количество дней посчитать могу, но решение общее количество дней делить на количество дней в году, месяце - плохое решение, будет не точность
Или каким способом можно прикрутить то что я хочу в вычислительное поле?