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 315 of 400)
Topics by DriveSoft User defined search
Posts found: 7,851 to 7,875 of 9,999
Приветствую,
встроенной возможности логирования SQL запросов базы нет, но это вполне реализуемо скриптами.
Есть пример ведения логов базы данных
http://myvisualdatabase.com/forum/misc. … download=1
только в вашем случае логи необходимо писать не в базу данных, а в текстовый файл, и писать их в виде SQL запросов (INSERT, UPDATE, DELETE)
Приветствую,
С чем связано использование поиска через SQL запрос?
Судя по вашим SQL запросам, они являются простыми, и для поиска достаточна будет кнопки с действием "Поиск", где вы просто выбираете необходимые компоненты, в которых будут критерии поиска и поля из таблиц, которые нужны в результате поиска.
Можете прислать свой проект на support@drive-software.com
постараюсь помочь.
К сожалению нет простого способа сделать то, что вы хотите.
В будущем я планирую сделать редактирование записей непосредственно в TableGrid
Приветствую,
На форме frmMusicianEdit, вместо TextBox для инструмента и стиля необходимо использовать ComboBox
rjkantor
You use the button with the action "SQL Query"?
Like an edit field, you can reference TableGrid1 as {TableGrid1} in SQL in this way you get id selected record.
zoomix
Вы про пример Calculated Footer.zip ?
Результат можно вывести и через Label,
Например вместо этого
Form1.GridAbonent.Columns[3].Footer.Caption := IntToStr(q); // result
написать
Form1.Label1.Caption := IntToStr(q);
Hakimzadeh
Soon I'll make a FAQ section on the forum.
Thanks for feedback.
Добавление своего пункта меню для компонента TableGrid
Проект с примером:
http://myvisualdatabase.com/forum/misc. … download=1
Скрипт:
procedure Form1_OnShow (Sender: string; Action: string);
var
MyItem1: TMenuItem;
begin
MyItem1 := TMenuItem.Create (Form1);
MyItem1.Caption := 'My Item1';
MyItem1.OnClick := @MenuClick1;
Form1.GridEmployees.dbPopupMenu.Items.Insert(0, MyItem1);
end;
procedure MenuClick1;
begin
ShowMessage('Hello from PopupMenu');
end;
begin
end.
Изменение цвета ячеек компонента TableGrid, в зависимости от его содержимого.
procedure Form1_GridEmployees_OnChange (Sender: string);
var
i,c: integer;
begin
c := Form1.GridEmployees.RowCount - 1;
for i := 0 to c do
begin
if Form1.GridEmployees.Cells[3,i] = 'Yes' then Form1.GridEmployees.Cell[3,i].Color := clRed
else Form1.GridEmployees.Cell[3,i].Color := clGreen;
end;
end;
begin
end.
Проект с примером:
Проверка существования дубликата записи перед сохранением.
Проект с примером:
http://myvisualdatabase.com/forum/misc. … download=1
Скрипт
function CheckDublicate (Action, sTable, sField, sValue: string; id: integer;): boolean;
var
s: string;
sIdSQL: string;
arrFields: array of string;
arrValues: array of string;
sWhere: string;
i,c: integer;
begin
result := False;
arrFields := SplitString(sField, ';');
arrValues := SplitString(sValue, ';');
if Length(arrFields) <> Length(arrFields) then exit;
sWhere := '';
c := Length(arrFields)-1;
for i := 0 to c do
begin
if arrValues[i] <> 'NULL' then
sWhere := sWhere + arrFields[i]+' LIKE ' + arrValues[i] + ' AND '
else sWhere := sWhere + arrFields[i]+' IS NULL AND '
end;
if sWhere<>'' then SetLength(sWhere, Length(sWhere)-4);
if Action = 'NewRecord' then
begin
s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE '+sWhere);
if StrToInt(s) > 0 then result := True;
end;
if Action = 'ShowRecord' then
begin
if id <> -1 then sIdSQL := ' AND (id <> '+ IntToStr(id) +')';
s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE ('+ sWhere +') ' + sIdSQL);
if StrToInt(s) > 0 then result := True;
end;
end;
procedure frmEmployee_Button2_OnClick (Sender: string; var Cancel: boolean);
var
sFields, sValues: string;
begin
sFields := 'lastname;firstname';
sValues := frmEmployee.edLastName.sqlValue+';'+frmEmployee.edFistName.sqlValue;
if CheckDublicate(frmEmployee.dbAction, 'employees', sFields, sValues, frmEmployee.ButtonSave.dbGeneralTableId) then
begin
ShowMessage('Person already exists.');
Cancel := True;
end;
end;
begin
end.
Вход через логин и пароль, скрипт позволяет создавать пользователей с паролями.
Проект с примером:
http://myvisualdatabase.com/forum/misc. … download=1
Вход через логин и пароль, с защитой от повторного захода пользователя в базу данных.
http://myvisualdatabase.com/forum/misc. … download=1
Вход через логин/пароль с различными правами, разграничиваются права на чтение, запись, поиска и т.д.
Проект с примером:
http://myvisualdatabase.com/forum/misc. … download=1
Этот же проект, но с возможностью смены пароля пользователем самостоятельно:
http://myvisualdatabase.com/forum/misc. … download=1
----------
Просмотр изображения из базы данных рядом с TableGrid
Скрипт:
procedure Form1_GridEmployees_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
Form1.DBImage1.Clear;
Form1.DBImage1.LoadFromDatabase('employees', 'photo', Form1.GridEmployees.dbItemID);
end;
begin
end.
Проект с примером
Проект с примером ведения логов редактирования базы данных
http://myvisualdatabase.com/forum/misc. … download=1
Проект с примером, в логи добавляется также имя пользователя ПК
http://myvisualdatabase.com/forum/misc. … download=1
-
jean.brezhonek
Please, send me your project to support@drive-software.com
I'll try to help you.
Создание горячего сочетания клавиш на примере Shift+Ctrl+P
procedure Form1_OnKeyDown (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
if (Key = ORD('P')) and Shift and Ctrl then
begin
ShowMessage('Shift + Ctrl + P');
end;
end;
begin
Form1.KeyPreview := True;
end.
Проект с данным примером:
В папке "backup" создаются резервные копии базы данных вида backup_дата_время.db при входе в программу, каждые три часа и при выходе.
Проект с данным примером:
http://myvisualdatabase.com/forum/misc. … download=1
Скрипт:
var
Timer: TTimer;
iSeconds: integer;
procedure Form1_OnShow (Sender: string; Action: string);
begin
CopyFile('sqlite.db', 'backup/backup '+ FormatDateTime('dd-mm-yyyy hh-nn-ss', now)+'.db');
Timer := TTimer.Create (Form1);
Timer.Interval := 1000;
Timer.Enabled := True;
Timer.OnTimer := @OnTimer;
end;
procedure Form1_OnClose (Sender: string; Action: string);
begin
CopyFile('sqlite.db', 'backup/backup '+ FormatDateTime('dd-mm-yyyy hh-nn-ss', now)+'.db');
Timer.Free;
end;
procedure OnTimer;
begin
iSeconds := iSeconds + 1;
if iSeconds > 10800 then // backup every 3 hours (10800 seconds)
begin
iSeconds := 0;
CopyFile('sqlite.db', 'backup/backup '+ FormatDateTime('dd-mm-yyyy hh-nn-ss', now)+'.db');
end;
end;
begin
end.
Начиная с версии 1.49, есть возможность отправлять SMS используя SMS шлюзы
Через http://turbosms.ua (Россия, Украина, Беларусь)
Проект с примером: http://myvisualdatabase.com/forum/misc. … download=1
Через http://clickatell.com (все страны)
Проект с примером: http://myvisualdatabase.com/forum/misc. … download=1
Сортировка колонки вида n1-n2-n3
например:
3-34-1
3-34-2
..........
3-34-10
............
3-36-1
В настройках компонента TableGrid1 (либо в настройках кнопки с действием "Поиск"), выбрать сортировку ORDER BY и вставить следующее условие:
CAST (trim(substr(replace(fieldnumber, '-', ' '), 1, 3)) AS INTEGER), CAST (trim(substr(replace(fieldnumber, '-', ' '), 7, 5)) AS INTEGER), CAST (trim(substr(replace(fieldnumber, '-', ' '), 12)) AS INTEGER)
где fieldnumber - поле текстового вида
Скачать проект с данным примером:
http://myvisualdatabase.com/forum/misc. … download=1
-
Вычисление на форме (frmZakaz)
Допустим есть текстовые поля, в которых содержится цена продукта (edCost) и его количество (edQ), необходимо вычислить Итого (edTotal).
procedure CalculateTotal;
begin
frmZakaz.edTotal.Value := frmZakaz.edCost.Value * frmZakaz.edQ.Value; // calculate
end;
procedure frmZakaz_edQ_OnChange (Sender: string);
begin
CalculateTotal;
end;
procedure frmZakaz_edCost_OnChange (Sender: string);
begin
CalculateTotal;
end;
begin
end.
Проект с данным примером:
zoomix wrote:Спасибо. А редакция в гридах, в 1.46 - тоже невозможна?
К сожалению нет, в принципе даже в последней версии нет удобного способа это реализовать.
По ошибке сделал этот проект в бета версии 1.50, он не откроется в более поздней версии, пожалуйста скачайте данный пример снова, перезалил.
К сожалению убрать данное сообщение об ошибке не получится в версии 1.46, исправил это в бета версии 1.50
можете скачать отсюда:
https://www.dropbox.com/s/0m799p8qxh5kb … 0.zip?dl=0
Доработал немного ваш проект:
zoomix wrote:Научите, пож-ста, как выводить результаты каких-либо расчетов или полей в Label.
Сделал для вас пример:
Hello,
Here you can download the example, how to display picture
http://myvisualdatabase.com/forum/misc. … download=1
Posts found: 7,851 to 7,875 of 9,999