Здравствуйте.
Приложите пожалуйста данный проект с тестовыми данными, постараюсь что-нибудь придумать.
My Visual Database → Posts by DriveSoft
Здравствуйте.
Приложите пожалуйста данный проект с тестовыми данными, постараюсь что-нибудь придумать.
I have not received any file from you.
Still not received.
Please attach your project here, zip file without exe and dll
попробуйте так, но не тестировал
(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)
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;
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:
Дмитрий, а нельзя как то это исправить, вернуть как было?
Что именно исправить? Параметр этой функции всегда игнорировался, тем самым вводил в заблуждение, что функция вернет 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 возможно, но сложней, т.к. их придется создавать на форме динамически, потому что количество телефонов может быть разное.
К сожалению не совсем понимаю, какая цель данного вычисляемого поля, и что значит 566?
Last_Insert_id () в версии 3.3 при компиляции ругается!
Используйте эту функцию без параметра, т.е. вместо
Last_Insert_id('tablename');
так
Last_Insert_id;
как позже выяснилось, эта функция игнорирует параметр, т.е. возвращает id последней добаленной записи, но неизвестно, в какую таблицу была добавлена запись, поэтому используйте эту функцию только непосредственно после использования вставки записи, чтобы можно было быть уверенным, что функция вернет id от необходимой таблицы БД.
I made an example for you:
Item "Show record" it's like "edit record"
To add Delete menu item, just enable option "Editable grid > Allow delete"
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;
если что-то не получится, приложите пожалуйста ваш проект.
Помню в старой версии пользователи иногда сталкивались с такой ошибкой. Приложите пожалуйста ваш проект, возможно какой либо скрипт слишком активно работает с базой данных.
Hello.
Check it out
ltrim(strftime('%m', xdate), '0')
gonpublic2k
Please attach your project.
Unfortunately I can't understand your question, also you have strange database structure.
kovalenko
Решить ее можно по разному, например с помощью вычисляемого поля выводить все номера телефонов в грид GridOrder на форме frmOrder, либо выводить все телефонные номера заказа в отдельный грид или в Memo. Просто опишите, как бы вы хотели, чтобы это выглядело.
Дмитрий здравствуйте. Подскажите как можно сделать вывод номера телефона в форме frmOrder с привязкой к ранее заполненному заказу в frmApplication. Я там что-то "поковырял" , но что-то соображаловки и знаний как это сделать не хватает.
Спасибо
Здравствуйте.
Судя по вашей структуре БД, клиент может иметь несколько телефонных номеров, поэтому не ясно, какой номер телефона нужно выводить на форму frmOrder
Fullscreen, do you mean without caption of form and Windows taskbar?
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
Понял.
Только нужно спрятать не одну, а первую, третью и пятою и т.д..
Может оно и просто.
Подскажи еще разочекИли проще изменит ID и знак > поставить.
Только менять ID опять в базу лесть, чего не хочется.
можно скрыть и несколько, тогда условие будет таким
(id<>1) AND (id<>3) AND (id<>5)
My Visual Database → Posts by DriveSoft
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi