Skip to forum content
My Visual Database
A Simple Solution for Creating Databases
You are not logged in. Please login or register.
Active topics Unanswered topics
Search options (Page 3 of 10)
kovalenko wrote:DriveSoft wrote:Скачайте пожалуйста последнюю версию
https://www.dropbox.com/s/c804dzufyak6v … 2.zip?dl=0
Теперь можно добавлять компоненты в отчет, даже если они не связаны с БД, таким образом их значение будет передано в отчет и не будут учавствовать в поиске.
Также добавил возможность добавлять переменные в отчет с помощью скрипта, для этого создайте событие OnClick для кнопки с действием "Отчет"
procedure Form1_ButtonReport_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form1.frxReport.Variables.Clear;
Form1.frxReport.Variables[' ' + 'My Category 1'] := Null;
Form1.frxReport.Variables['My Variable 1'] := 10;
Form1.frxReport.Variables['My Variable 2'] := 20;
Form1.frxReport.Variables['My Variable 3'] := '''Hello''';
end;
Всем категорически прувет ))) !!! А кто подскажет, можно-ли, и если да то как, вот здесь например
Form1.frxReport.Variables['My Variable 2'] := 20;
вместо "20" воткнуть данные из какого-нибудь текстового поля на самой форме? Не залезая в сам скрипт?
На просторах, нашёл такой вариант
frxReport1.Variables.Variables['MyVar'] := '''' + Edit1.Text + '''';
'''' - 4 (четыре) одинарные кавычки
будет ли он работать? Вот в таком варианте:
procedure frmOrder_Button33_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form1.frxReport.LoadFromFile(ExtractFilePath(Application.ExeName)+'Report\repair invoice order3.fr3');
Form1.frxReport.Variables.Clear;
Form1.frxReport.Variables[' ' + 'My Category 1'] := Null;
Form1.frxReport.Variables['My Variable 1'] := 10;
Form1.frxReport.Variables['My Variable 2'] :='''' + frmOrder.Label25.Text + '''';
Form1.frxReport.Variables['My Variable 3'] := '''Hello''';
end;
не хочет...Может кто подскажет?
DriveSoft wrote:Скачайте пожалуйста последнюю версию
https://www.dropbox.com/s/c804dzufyak6v … 2.zip?dl=0
Теперь можно добавлять компоненты в отчет, даже если они не связаны с БД, таким образом их значение будет передано в отчет и не будут учавствовать в поиске.
Также добавил возможность добавлять переменные в отчет с помощью скрипта, для этого создайте событие OnClick для кнопки с действием "Отчет"
procedure Form1_ButtonReport_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form1.frxReport.Variables.Clear;
Form1.frxReport.Variables[' ' + 'My Category 1'] := Null;
Form1.frxReport.Variables['My Variable 1'] := 10;
Form1.frxReport.Variables['My Variable 2'] := 20;
Form1.frxReport.Variables['My Variable 3'] := '''Hello''';
end;
Всем категорически прувет ))) !!! А кто подскажет, можно-ли, и если да то как, вот здесь например
Form1.frxReport.Variables['My Variable 1'] := 10;
вместо "10" воткнуть данные из какого-нибудь текстового поля на самой форме? Не залезая в сам скрипт?
DriveSoft wrote:Здравствуйте.
Скачайте пожалуйста последнюю бета версию 3.6
https://www.dropbox.com/s/4rfukqr2r1awq … b.zip?dl=0
Пример:
procedure frmNumber_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
CloseForms(frmAbonent);
end;
procedure CloseForms(exceptForm: TForm);
var
i,c: integer;
begin
c := Screen.FormCount-1;
for i := c downto 0 do
begin
if (Screen.Forms[i] is TAForm) and
(Screen.Forms[i] <> exceptForm) and
(Screen.Forms[i].ClassName <>'TfrmMaindbCore') then Screen.Forms[i].Close;
end;
end;
процедура CloseForms закроет все формы кроме той, которая указана в параметрах, также главная форма также не будет закрыта.
Дмитрий здравствуйте. Перестало работать закрытие окон, при попытке использовать данную функцию, выпадает окно с "stack overflow" и через некоторое время программа закрывается.
Спасибо Дмитрий за оперативность!!!!
Здравствуйте. Кто подскажет, если в гриде включить функцию мультиселект, то через ctrl+A можно выбрать все текущие записи (строки) в гриде. А как скриптом дать команду на выбор всех текущих записей (строк) в гриде?
DriveSoft wrote:Приветствую.
Расположите на форме TextBox и установите его свойство NumbersOnly = True
Укажите для данного компонента выч. поле с помощью его свойств TableName и FieldName
Установите свойство Filter = ">" для данного компонента
Добавьте данный компонент в настройки кнопки "Поиск"
Теперь при поиске вы можете указать значение 0 в данном компоненте, т.о. будут выведены записи в грид, в которых данное выч. поле больше нуля.
ОООО СПАСИБО!!! Огромнейшее!!!
Всем привет. Реально туплю...помогите!!! В таблице "parts" есть вычисляемое поле, где хранятся остатки по позициям. Есть грид, куда выводятся позиции и остатки по ним (вычисляемое поле из таблицы "parts"). Как в гриде отфильтровать остатки, что бы выводилось всё, кроме нулевых позиций? Где-то видел, а теперь не могу найти информацию!
Посмотрите здесь
http://myvisualdatabase.com/forum/viewtopic.php?id=1072
а так, если полазить по форуму есть и примеры реализаций.
DriveSoft wrote:Пожалуйста прикладывайте проект с данными изменениями.
Спасибо за ответ. Задачу решил другим подходом. Спасибо.
kovalenko wrote:DriveSoft wrote:на форме Заказы, под панелькой у вас еще одна панель Panel11, уже на которой в свою очередь расположена Panel2.
Таким образом она невидима и соотвественно не будет работать, т.к. на нее невозможно кликнуть, но имено она используется в скрипте.
Просто сделайте так как я показал в примере для всех панелек.
Здравствуйте. Дмитрий, я взял панельку № 13 вырезал и вставил в свободное место формы. По логике она должна работать, но опять же, меняется только цвет. Может я много прошу, но вы не могли бы сделать пример в моём проекте хотя бы на кнопках "Принято".
Дмитрий здравствуйте. Убрал все скрытые панели с формы.
Но скрипт
procedure PanelOnClick (Sender: TObject);
var
panel: TdbPanel;
begin
panel := TdbPanel(Sender);
if panel.Color <> colorActive then
begin
panel.Color := colorActive;
SavePanelStatus(panel, True);
end else
begin
panel.Color := panel.Tag;
SavePanelStatus(panel, False);
end;
if Sender is frmOrder.Panel22 then
begin
frmOrder.GridOrder.dbFilter := '(repairstatus <> "Выдано/Оплачено")';
frmOrder.GridOrder.dbUpdate;
end;
end;
где в конце должна срабатывать обработка нажатия на панель и отработка фильтра, не срабатывает...
Что может быть не так?
k245 wrote:Index - служебное слово и в данном контексте его надо писать в косых кавычках - `index`. Но лучше избегать использования ключевых слов в названиях таблиц или полей.
Это понимание ко мне пришло....но поздновато, спасибо за помощь!
SELECT indexNumber FROM `index` WHERE id =
Всем привет. Может кто подскажет. Есть справочник index в нём одно поле indexNumber в формате Цельное число. Есть скриптик
frmAddClient.edIndex.Text := SQLExecute ('SELECT indexNumber FROM index WHERE id = ' + IntToStr(frmAddClient.cdIndex.dbItemID) );
Вместо Text вставлял Value, что-то данные не вставляются, ошибка Error message:near 'index":syntax error Script:SQLExecute. Что не так?
DriveSoft wrote:на форме Заказы, под панелькой у вас еще одна панель Panel11, уже на которой в свою очередь расположена Panel2.
Таким образом она невидима и соотвественно не будет работать, т.к. на нее невозможно кликнуть, но имено она используется в скрипте.
Просто сделайте так как я показал в примере для всех панелек.
Здравствуйте. Дмитрий, я взял панельку № 13 вырезал и вставил в свободное место формы. По логике она должна работать, но опять же, меняется только цвет. Может я много прошу, но вы не могли бы сделать пример в моём проекте хотя бы на кнопках "Принято".
kovalenko wrote:DriveSoft wrote:Пожалуйста, прикладывайте проект с данными измененями, и с пошаговым описанием действий, приводящих к ошибке. К сожалению мне трудно ориентироваться в незнакомом проекте.
Отправил вам на почту.
Спасибо.
Дмитрий здравствуйте. По фильтрам. На главной форме кнопка РАБОТЫ. Переход на форму ЗАКАЗЫ. Внизу есть Group Box "Статусы заказов/фильтр вывода информации". По умолчанию там фильтр "Показать все заказы кроме выбранного", если на эту надпись нажать, то фильтры сменяться на "Показать заказы только с выбранным статусом". У меня сейчас исходя из ваших рекомендаций настроены только кнопки в Group Box "ПРИНЯТО", т.е если нажать панельку "ПРИНЯТО" с включенным фильтром "Показать все заказы кроме выбранного" то соответственно должно быть показано всё кроме. Если выбрать фильтр "Показать заказы только с выбранным статусом", то при нажатии на панельку принято, должен быть выведен только статус "ПРИНЯТО". Всё, кроме панелек "ПРИНЯТО" с использованным предложенным вами скриптом работает. С вашим скриптом меняется только цвет панелек. Да, панелек соответственно на каждый статус по две, и они переключаются нажатием кнопок "Показать все заказы кроме выбранного" / "Показать заказы только с выбранным статусом".Как-то так.
Проект отправил вам на почту.
DriveSoft wrote:Пожалуйста, прикладывайте проект с данными измененями, и с пошаговым описанием действий, приводящих к ошибке. К сожалению мне трудно ориентироваться в незнакомом проекте.
Отправил вам на почту.
Спасибо.
DriveSoft wrote:Пожалуйста, прикладывайте проект с данными измененями, и с пошаговым описанием действий, приводящих к ошибке. К сожалению мне трудно ориентироваться в незнакомом проекте.
Ок, чуть попозже вам дам всю раскладку. Спасибо!
DriveSoft wrote:procedure frmAppearance_TableGrid1_OnCellDoubleClick (Sender: string; ACol, ARow: Integer);
begin
if frmAppearance.CheckBox1.Checked=True then
begin
if frmApplication.textAppearance.Lines.IndexOf(frmAppearance.TableGrid1.Cells[0, ARow] + ', ') = -1 then
frmApplication.textAppearance.Lines.Add(frmAppearance.TableGrid1.Cells[0, ARow] + ', ' ) else ShowMessage('Дубликат');
end;
frmAppearance.Close;
end;
procedure frmAppearance_Button7_OnClick (Sender: string; var Cancel: boolean);
var
i,c: integer;
iColumn: integer;
begin
iColumn := frmAppearance.TableGrid1.Columns.Count-2;
c := frmAppearance.TableGrid1.RowCount - 1;
for i :=0 to c do
if (frmAppearance.CheckBox1.Checked=True) and (frmAppearance.TableGrid1.Selected[i]) then
begin
if frmApplication.textAppearance.Lines.IndexOf(frmAppearance.TableGrid1.Cells[iColumn, i] + ', ') = -1 then
frmApplication.textAppearance.Lines.Add(frmAppearance.TableGrid1.Cells[iColumn, i] + ', ') else ShowMessage('Дубликат');
end;
frmAppearance.Close;
end;
Спасибо! Работает!!! Не всегда хватает кумекалки прикрутить ваши рекомендации к своему проекту, а вот когда вы адаптируете ваши рекомендации к моему скрипту-картинка начинает складываться. Ещё раз спасибо!!!
DriveSoft wrote:К сожалению по описанию не понял, в чем именно трудность. Попробуйте просто понять, как работает данная проверка.
Так например
является просто параметром с текстом, вместо этого там может быть простая текстовая переменная, либо любой другой компонент с текстом, например Form1.Edit1.Text, при это не важно из какой формы
Хорошо. Помогите пожалуйста. Имею
procedure frmAppearance_TableGrid1_OnCellDoubleClick (Sender: string; ACol, ARow: Integer);
begin
if frmAppearance.CheckBox1.Checked=True then
begin
frmApplication.textAppearance.Lines.Add(frmAppearance.TableGrid1.Cells[0, ARow] + ', ' );
end;
frmAppearance.Close;
end;
Или
procedure frmAppearance_Button7_OnClick (Sender: string; var Cancel: boolean);
var
i,c: integer;
iColumn: integer;
begin
iColumn := frmAppearance.TableGrid1.Columns.Count-2;
c := frmAppearance.TableGrid1.RowCount - 1;
for i :=0 to c do
if (frmAppearance.CheckBox1.Checked=True) and (frmAppearance.TableGrid1.Selected[i]) then
begin
frmApplication.textAppearance.Lines.Add(frmAppearance.TableGrid1.Cells[iColumn, i] + ', ' );
end;
frmAppearance.Close;
end;
Как мне это сюда прикрутить.
DriveSoft wrote:Возможно вы не поняли скрипт, в примере Form1.Panel2 вы должны заменить это на имя панели используемую в вашем проекте.
т.е. данная части скрипта означает, что в параметре Sender содержится ссылка на объект Panel, от которой пришло событие, т.е. по которой кликнули, поэтому в условии проверяем, если кликнули на определенную панель, то выполняем определенное действие
if Sender is Form1.Panel2 Then
begin
frmOrder.cdRepStatus.Caption:='Принят';
frmOrder.bSearch.Click;
end;
Вот мой скрипт
procedure PanelOnClick (Sender: TObject);
var
panel: TdbPanel;
begin
panel := TdbPanel(Sender);
if panel.Color <> colorActive then
begin
panel.Color := colorActive;
SavePanelStatus(panel, True);
end else
begin
panel.Color := panel.Tag;
SavePanelStatus(panel, False);
end;
if Sender is frmOrder.Panel2 Then
begin
frmOrder.cdRepStatus.Caption:='Принят';
frmOrder.bSearch.Click;
end;
if Sender is frmOrder.Panel13 Then
begin
frmOrder.GridOrder.dbFilter := '(repairstatus <> "Принят")';
frmOrder.GridOrder.dbUpdate;
end;
end;
Пробовал отключать и нет скрипты
procedure frmOrder_Panel2_OnClick (Sender: string);
begin
frmOrder.cdRepStatus.Caption:='Принят';
frmOrder.bSearch.Click;
end;
и
procedure frmOrder_Panel13_OnClick (Sender: string);
begin
frmOrder.GridOrder.dbFilter := '(repairstatus <> "Принят")';
frmOrder.GridOrder.dbUpdate;
end;
Не хочет.
DriveSoft wrote:Какая точно проблема с добавлением из другой формы?
Можно-ли при добавлении записи в мемо сравнивать с тем, что там уже есть?
приведенный выше скрипт именно это и делает.
Отправил вам проект с описанием вопроса на почту.
Спасибо.
DriveSoft wrote:Приложите пожалуйста проект с данным скриптом и опишите, что именно не работает.
Отправил.
DriveSoft wrote:попробуйте так
procedure PanelOnClick (Sender: TObject);
var
panel: TdbPanel;
begin
panel := TdbPanel(Sender);
if panel.Color <> colorActive then
begin
panel.Color := colorActive;
SavePanelStatus(panel, True);
end else
begin
panel.Color := panel.Tag;
SavePanelStatus(panel, False);
end;
if Sender is Form1.Panel2 Then
begin
frmOrder.cdRepStatus.Caption:='Принят';
frmOrder.bSearch.Click;
end;
if Sender is Form1.Panel3 Then
begin
frmOrder.GridOrder.dbFilter := '(repairstatus <> "Принят")';
frmOrder.GridOrder.dbUpdate;
end;
end;
Не работает(((
DriveSoft wrote:попробуйте так
procedure PanelOnClick (Sender: TObject);
var
panel: TdbPanel;
begin
panel := TdbPanel(Sender);
if panel.Color <> colorActive then
begin
panel.Color := colorActive;
SavePanelStatus(panel, True);
end else
begin
panel.Color := panel.Tag;
SavePanelStatus(panel, False);
end;
if Sender is Form1.Panel2 Then
begin
frmOrder.cdRepStatus.Caption:='Принят';
frmOrder.bSearch.Click;
end;
if Sender is Form1.Panel3 Then
begin
frmOrder.GridOrder.dbFilter := '(repairstatus <> "Принят")';
frmOrder.GridOrder.dbUpdate;
end;
end;
Спасибо. И как я понимаю вот эти части скрипта
if Sender is Form1.Panel2 Then
begin
frmOrder.cdRepStatus.Caption:='Принят';
frmOrder.bSearch.Click;
end;
if Sender is Form1.Panel3 Then
begin
frmOrder.GridOrder.dbFilter := '(repairstatus <> "Принят")';
frmOrder.GridOrder.dbUpdate;
end;
делаю для всех остальных панелек?
DriveSoft wrote:Можно так
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
if Form1.Memo1.Lines.IndexOf(Form1.ComboBox1.Text) = -1 then
Form1.Memo1.Lines.Add(Form1.ComboBox1.Text) else ShowMessage('Дубликат');
end;
Дмитрий, а если записи добавляются из другой формы. Или добавляются вручную, тогда как? Просто я убрал добавление записей через ComboBox. Можно-ли при добавлении записи в мемо сравнивать с тем, что там уже есть?
Всех категорически!!!
Может кто подскажет как запретить добавление одной и той-же записи в поле Memo. Если по сути вопроса, есть справочник с комплектующими из которого добавляется всё необходимое в заказа (поле Memo). Как запретить добавление дублирующих строк в это поле?
Posts found: 51 to 75 of 248