Здравствуйте.


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

3,552

(6 replies, posted in General)

I have not received any file from you.

3,553

(9 replies, posted in General)

Still not received.
Please attach your project here, zip file without exe and dll

3,554

(3 replies, posted in Russian)

попробуйте так, но не тестировал

(case when strftime('%m',birth) = '01' then 566/31 
      when strftime('%m',birth) = '02' then 566 / (CASE (julianday(birth, 'start of year', '+1 year') - julianday(birth, 'start of year')) WHEN 366 THEN 29 ELSE 28 END)
      when strftime('%m',birth) = '03' then 566/31     
      when strftime('%m',birth) = '04' then 566/30  
      when strftime('%m',birth) = '05' then 566/31      
      when strftime('%m',birth) = '06' then 566/30
      when strftime('%m',birth) = '07' then 566/31 
      when strftime('%m',birth) = '08' then 566/31 
      when strftime('%m',birth) = '09' then 566/30   
      when strftime('%m',birth) = '10' then 566/31     
      when strftime('%m',birth) = '11' then 566/30  
      when strftime('%m',birth) = '12' then 566/31      
 end)

3,555

(3 replies, posted in General)

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    OpenFile(Application.ExeName);
    Form1.Close;
end;

kovalenko


Так можно. Телефоны будут показаны в компонентах Edit2,Edit4,Edit5

пример:

procedure frmOrder_GridOrder_OnCellClick (Sender: string; ACol, ARow: Integer); 
var
    sl: TStringList;
begin
   //Первый метод
      //Form1.Edit2.Text := SQLExecute('SELECT firstname FROM employees WHERE id = ' + IntToStr(Form1.GridEmployees.dbItemID));
     //frmOrder.Edit2.Text := SQLExecute('SELECT notes FROM application WHERE id = ' + IntToStr(frmOrder.GridOrder.dbItemID));
     //frmOrder.Edit2.Text := SQLExecute('SELECT number FROM phones WHERE id = ' + IntToStr(frmApplication.edPhone.dbItemID));
     //Второй метод
     frmOrder.edNotes.Text := frmOrder.GridOrder.Cells[12, ARow];
     frmOrder.Edit1.Text := frmOrder.GridOrder.Cells[9, ARow];


     frmOrder.Edit2.Clear;
     frmOrder.Edit4.Clear;
     frmOrder.Edit5.Clear;
     sl := TStringList.Create;
     sl.Text := SQLExecute('SELECT group_concat(phones.number, char(13) || char(10)) FROM application LEFT OUTER JOIN client ON client.id=application.id_client LEFT OUTER JOIN phones ON phones.id_client=client.id WHERE Application.id='+frmOrder.GridOrder.sqlValue);
     if sl.Count > 0 then frmOrder.Edit2.Text := sl[0];
     if sl.Count > 1 then frmOrder.Edit4.Text := sl[1];
     if sl.Count > 2 then frmOrder.Edit5.Text := sl[2];
     sl.Free;
end;

3,557

(8 replies, posted in General)

v_pozidis wrote:

yes Dmitry, but imagine that instead giving one per one the partnumber, just  to give an order number ( which is in another table) and that  contains the quantity of the partnumbers.


DriveSoft wrote:

I made an example for you:

Another example:

delphinsl wrote:

Дмитрий, а нельзя как то это исправить, вернуть как было?

Что именно исправить? Параметр этой функции всегда игнорировался, тем самым вводил в заблуждение, что функция вернет id именно указанной таблицы.

в событие

procedure frmOrder_GridOrder_OnCellClick (Sender: string; ACol, ARow: Integer); 

добавьте эту строку

frmOrder.Memo1.Text := SQLExecute('SELECT group_concat(phones.number, char(13) || char(10)) FROM application LEFT OUTER JOIN client ON client.id=application.id_client LEFT OUTER JOIN phones ON phones.id_client=client.id WHERE Application.id='+frmOrder.GridOrder.sqlValue);

номера телефонов будут выведены в Memo, в отдельные поля TextBox возможно, но сложней, т.к. их придется создавать на форме динамически, потому что количество телефонов может быть разное.

3,560

(3 replies, posted in Russian)

К сожалению не совсем понимаю, какая цель данного вычисляемого поля, и что значит 566?

delphinsl wrote:

Last_Insert_id () в версии 3.3 при компиляции ругается!

Используйте эту функцию без параметра, т.е. вместо

Last_Insert_id('tablename');

так

Last_Insert_id;


как позже выяснилось, эта функция игнорирует параметр, т.е. возвращает id последней добаленной записи, но неизвестно, в какую таблицу была добавлена запись, поэтому используйте эту функцию только непосредственно после использования вставки записи, чтобы можно было быть уверенным, что функция вернет id от необходимой таблицы БД.

3,562

(8 replies, posted in General)

I made an example for you:

3,563

(2 replies, posted in Script)

Item "Show record" it's like "edit record"


To add Delete menu item, just enable option "Editable grid > Allow delete"

3,564

(9 replies, posted in General)

Hello.


Unfortunately I can't find any email from you. Please send me again your project to support@drive-software.com

Приветствую.


Это возможно реализовать с помощью небольшого скрипта, пример

procedure Form1_OnClick (Sender: string);
var
    sType: string;
begin
    sType := SQLExecute('SELECT "type" FROM tablename WHERE id='+Form1.TableGrid1.sqlValue);

    if sType = '1' then
        ShowRecord(Form2, 'tablename', Form1.TableGrid1.dbItemID
    else if sType = '2' then
        ShowRecord(Form3, 'tablename', Form1.TableGrid1.dbItemID;
end;


если что-то не получится, приложите пожалуйста ваш проект.

3,566

(13 replies, posted in Russian)

Помню в старой версии пользователи иногда сталкивались с такой ошибкой. Приложите пожалуйста ваш проект, возможно какой либо скрипт слишком активно работает с базой данных.

3,567

(4 replies, posted in SQL queries)

Hello.


Check it out

ltrim(strftime('%m', xdate), '0')

gonpublic2k
Please attach your project.

3,569

(8 replies, posted in General)

Unfortunately I can't understand your question, also you have strange database structure.

kovalenko
Решить ее можно по разному, например с помощью вычисляемого поля выводить все номера телефонов в грид GridOrder на форме frmOrder, либо выводить все телефонные номера заказа в отдельный грид или в Memo. Просто опишите, как бы вы хотели, чтобы это выглядело.

kovalenko wrote:

Дмитрий здравствуйте. Подскажите как можно сделать вывод номера телефона в  форме frmOrder  с привязкой к ранее заполненному заказу в frmApplication. Я там что-то "поковырял" , но что-то соображаловки и знаний как это сделать не хватает.
Спасибо

Здравствуйте.


Судя по вашей структуре БД, клиент может иметь несколько телефонных номеров, поэтому не ясно, какой номер телефона нужно выводить на форму frmOrder

3,572

(1 replies, posted in General)

Fullscreen, do you mean without caption of form and Windows taskbar?

3,573

(6 replies, posted in General)

mathmathou
Insted this procedure

//-02- FORMATING CELLS IN TABELGRID1
procedure stats_Button1_OnAfterClick (Sender: string);
var
    r : Integer;
    nb_known, nb_owned : Integer;
    value_known, value_owned : Extended;
begin
    for r := 0 to stats.TableGrid1.RowCount - 1 do
        begin
            stats.TableGrid1.Cells[1,r] := FormatFloat('#,##0', StrToFloat(stats.TableGrid1.Cells[1,r]));
            stats.TableGrid1.Cells[2,r] := FormatFloat('#,##0.00', StrToFloat(stats.TableGrid1.Cells[2,r]));
        end;
    stats.TableGrid1.Columns[2].Footer.Caption :=  FormatFloat('#,##0.00', stats.TableGrid1.Columns[2].Footer.FormulaValue);

end;

please use it:

procedure stats_TableGrid1_OnChange (Sender: string);
begin
  if stats.TableGrid1.Columns[1] is TNxNumberColumn then
  begin
      TNxNumberColumn(stats.TableGrid1.Columns[1]).FormatMask := '#,##0';
      TNxNumberColumn(stats.TableGrid1.Columns[1]).Footer.FormatMask := '#,##0';
  end;

  if stats.TableGrid1.Columns[2] is TNxNumberColumn then
  begin
      TNxNumberColumn(stats.TableGrid1.Columns[2]).FormatMask := '#,##0.00';
      TNxNumberColumn(stats.TableGrid1.Columns[2]).Footer.FormatMask := '#,##0.00';
  end;
end;

legerman
Здравствуйте.


Вместо функции StrToDate используйте StrToDateTime

3,575

(18 replies, posted in Russian)

Popkov-alex wrote:

Понял.
Только нужно спрятать не одну, а первую, третью и пятою и т.д..
Может оно и просто.
Подскажи еще разочек smile

Или проще изменит ID и знак > поставить.
Только менять ID опять в базу лесть, чего не хочется.

можно скрыть и несколько, тогда условие будет таким

(id<>1) AND (id<>3) AND (id<>5)