Спасибо разобрался.
var
dt:string;
begin
dt :=DateToStr(Date);//получаем дату.
if Form1.TableGrid1.Cells[0,i] = (dt) then...
My Visual Database → Posts by Andrei
Спасибо разобрался.
var
dt:string;
begin
dt :=DateToStr(Date);//получаем дату.
if Form1.TableGrid1.Cells[0,i] = (dt) then...
Получилось написать неверный скрипт(((.
Поля res.id_print, print.name, res.date вытаскиваются для первого значения WHERE res.id_Priznzam = 1, а нужно чтобы вытаскивались для id = MAX(res) from res WHERE res.id_Priznzam = 1.
Нужен подзапрос, но как не крутил - ошибка.
procedure FrmOth1_Button14_OnClick (Sender: TObject; var Cancel: boolean);
begin
frmOth1.Button14.dbSQL := ' select res.id_print, print.name, res.date, MAX(res.res) '+
' FROM res LEFT OUTER JOIN print ON res.id_print=print.id '+
' WHERE res.id_Priznzam = 1 '+
' GROUP BY res.id_print ';
end;
Здравствуйте.
Есть поле date. Необходимо подкрасить текущую дату. Какой оператор.
...
if Form1.TableGrid1.Cells[8,i] = ???? then
begin
for f := 0 to c do
Form1.TableGrid1.Cell[f,i].Color := $006B8DE7;
...
Здравствуйте. Спасибо.
Получилось прикрутить календарь, но очень криво. Сейчас сразу же проставляется дата пустая, т.к. в календаре не выбрана дата. Все логично. Подскажите как изменить данный скрипт
if value then s := Form1.dtDateOfBirth.sqlDate;
1)if value then - развернуть календарь Form1.dtDateOfBirth для внесения даты;
2)назначить переменную s :=Form1.dtDateOfBirth
Прикладываю весь скрипт и проект
procedure Form1_Button7_OnClick (Sender: TObject; var Cancel: boolean);
begin
ChangeValues1(True);
end;
procedure ChangeValues1(value: boolean);
var
i,c: integer;
s: string;
begin
if value then s := Form1.dtDateOfBirth.sqlDate;
c := Form1.GridEmployees.RowCount-1;
for i := 0 to c do
begin
if Form1.GridEmployees.Selected[i] then
begin
SQLExecute('UPDATE employees SET DateOfBirth = '+s + ' WHERE id='+IntToStr(Form1.GridEmployees.dbIndexToID(i)));
end;
end;
Form1.GridEmployees.dbUpdate;
end;
База находится в папке с exe-шником и создана в формате SQLite?
Если да, то насколько я понимаю, ваш проект для однопользовательского режима.
Habr о SQLite
А как с архитектурой? Сервера-то нету?
Сервера нету, само приложение является сервером. Доступ к БД происходит через «подключения» к БД (нечто вроде хэндла файла ОС), которые мы открываем через вызов соот-й функции DLL. При открытии указывается имя файла БД. Если такого нету — он автоматически создается.
Допустимо открывать множество подключений к одной и тоже БД (через имя файла) в одном или разных приложениях.
Система использует механизмы блокировки доступа к файлу на уровне ОС, чтобы это все работало
(эти механизмы обычно плохо работают на сетевых дисках, так что не рекомендуется использовать SQlite с файлом на сети).
Изначально SQlite работал по принципу «многие читают — один пишет».
То есть только одно соединение пишет в БД в данный момент времени. Если другие соединения попробуют тоже записать, то словят ошибку SQLITE_BUSY.
Можно, однако, ввести таймаут операций. Тогда подключение, столкнувшись с занятостью БД, будет ждать N секунду прежде, чем отвалиться с ошибкой SQLITE_BUSY.
тут по сути проблема не с программой, а с базой. Файл базы блокируется и-за какого-то подвисшего компа , и другие не могут уже к базе обращаться. Появляется сообщение 'base is locked' .
База находится в папке с exe-шником и создана в формате SQLite?
Если да, то насколько я понимаю, ваш проект для однопользовательского режима.
Через скрипты.
var
idUser: integer;
procedure Form1_TableGrid1_OnClick (Sender: TObject);
begin
idUser := Form1.TableGrid1.dbItemID;
end;
Дальше работать с кнопками.
Здравствуйте.
Подскажите пожалуйста как выбрать из таблицы Res записи по 3 принтерам (группировка) для MAX значения поля res.res и условия что id_priznak = 1
Res print Искомый результат???
id | id_ print | date | res | id_priznak | id | model | res.id | print.model | res.date | res.res |
1 | 1 | 2021-01-01 | 10 | 1 | 1 | HP2055 | 4 | HP2055 | 2021-01-04 | 40 |
2 | 1 | 2021-01-02 | 20 | 1 | 2 | Xerox 3025 | 7 | Xerox 3025 | 2021-01-03 | 30 |
3 | 1 | 2021-01-03 | 30 | 2 | 3 | Xerox 3100 | 10 | Xerox 3100 | 2021-01-02 | 20 |
4 | 1 | 2021-01-04 | 40 | 1 |
5 | 2 | 2021-01-01 | 10 | 1 |
6 | 2 | 2021-01-02 | 20 | 1 |
7 | 2 | 2021-01-03 | 30 | 1 |
8 | 2 | 2021-01-04 | 40 | 2 |
9 | 3 | 2021-01-01 | 10 | 2 |
10| 3 | 2021-01-02 | 20 | 1 |
11| 3 | 2021-01-03 | 30 | 2 |
12| 3 | 2021-01-04 | 40 | 2 |
Здравствуйте.
Подскажите как в данном примере массово изменить поле dateofbirth?
Здравствуйте.
Есть рабочая процедура где Button6 (штатные средства) открытие формы.
procedure Form1_TableGrid1_OnDoubleClick (Sender: TObject; Action: string);
begin
idZapr := Form1.TableGrid1.dbItemID;
idPlat :=SQLExecute ('SELECT id_plat FROM zapros WHERE zapros.id= '+inttostr(idZapr));
Form1.Button6.Click;
end;
Подскажите как можно прервать в данной процедуре выполнение открытия формы (Form1.Button6.Click) если это не admin.
Что то вроде следующего НЕ РАБОТАЕТ.
procedure Form1_TableGrid1_OnDoubleClick (Sender: TObject; Action: string);
begin
if (not isAdmin) then exit
else
begin
idZapr := Form1.TableGrid1.dbItemID;
idPlat :=SQLExecute ('SELECT id_plat FROM zapros WHERE zapros.id= '+inttostr(idZapr));
Form1.Button6.Click;
end;
end;
Спасибо.
Все оказалось до обидного просто.
можете прикрепить проект?
Создал имитацию вопроса.
Цель в форме Search при вводе в edit значения '12' вывести три записи
id | inn
2 | 1211
3 | 1221
6 | 1123
Подскажите как правильно сделать.
Пример:
tbl1
id | inn
1 | 1111
2 | 1211
3 | 1221
4 | 1311
На форме edit для ввода инн и Button для вывода в Grid
Нужно чтобы при вводе в edit значения '12' в грид выдало две записи
id | inn
2 | 1211
3 | 1221
соответственно при вводе в edit значения '11' в грид одна запись 1111 и т.д.
Кнопка Button должна сделать select из таблицы tbl1
Индекс не помог. Пришлось отключить поиск Searchable
Здравствуйте.
При поиске по ИНН с включенным свойством в ComboBox Searchable начались серьезные тормоза.
Подскажите пожалуйста может быть есть способ настройки свойства компонента Searchable?
Поможет ли создание индекса по столбцу ИНН
ALTER TABLE plat ADD INDEX i_inn (inn)?
Petr
Огромное спасибо.
Это реальный костыль, который работает.
с процедурой OnChange. Рабочий код:
procedure Form_Zapr_ComboBox1_Change(Sender: TObject);
begin
Form_Zapr.Edit1.Text := Form_Zapr.ComboBox1.Text;
end;
procedure Form_Zapr_ComboBox1_OnDropDown (Sender: TObject);
begin
Form_Zapr.ComboBox1.dbSQLExecute ('SELECT vhod_numer FROM Zapros GROUP BY vhod_numer ');
end;
procedure Form_Zapr_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form_Zapr.Button1.dbSQL := 'select distinct a.id, b.Kod, c.inn, c.name, a.vhod_numer, a.vhod_data, d.name '+
'from zapros a '+
'join departament b on a.id_departament=b.id '+
'join plat c on a.id_plat=c.id '+
'join org_zap d on a.id_org_zap=d.id '+
'where (a.vhod_numer = {edit1})';
end;
Здравствуйте.
Как наложить фильтр на Combobox, что бы он показывал уникальные записи.
Ключи ComboBoxa
ForeignKey: sprav_zapr.id_Zapros
FieldName: vhod_numer
В таблице есть 10 записей с vhod_numer = '100'
Если просто использовать данный ComBobox, то он в ComBoboxе будет показывать 10 записей со значением '100'.
Нужно, чтоб Combobox показал 1 запись со значением '100' и при выборе данной записи в TableGrid вывелось 10 строк.
Если с Combobox этого не может, то как можно это реализовать?
в программе много багов . и времени уходит гораздо больше для создание простой формы . И платить деньги за сырую программу не вижу смысла. В программе я еще нашел два бага и поэтому программу удаляю не стоит она не денег не времени с ней разбираться . но задумка в целом я считаю не плохая удачи разработчикам. А все кто ей пользуется будьте внимательны в программе много багов . Удачи
Не соглашусь от слова - СОВСЕМ.
2 года назад мне руководством была поставлена задача - сделать "Опросник" для сотрудников организации. Погуглив - остановился на данном, без преувеличения, шедевре и соответственно купил max лицензию на свой страх и риск. Перед реализацией своего первого проекта в данной программе, представления о программировании у меня было - '0'. Единственное с чем ранее приходилось сталкиваться с SQL. По прошествию 2-х лет я имею опросник и несколько баз. Пусть они корявые и эстетически не красивые, но они - РАБОЧИЕ!!! А самое главное, что худо бедно я начал писать КОД и администрировать MySQL. Огромное СПАСИБО разработчику MVD и ребятам, благодаря которым этот форум и проект "живой".
p.s. Заранее извините за мои на первый взгляд глупые вопросы и темы на форуме. Обращаюсь на форум, только после того, как все перепроверю, но не получается или когда не знаю можно ли так сделать.
Здравствуйте.
Как правильно написать CONCAT в вычисляемом поле для таблицы a.b
tab a
a.id | a.b вычисляемое поле (???)
1 (???) 25, 35, 15
2 (???) 7, 9
tab b
b.id | b.id_a | b.c
1 1 25
2 1 35
3 1 15
4 2 7
5 2 9
Здравствуйте.
Столкнулся с ситуацией: двое сотрудников сохранили одновременно записи и после закрытия формы в TableGrid1 другой формы не увидели этих записей до закрытия (перехода в другую) формы.
Можно сделать процедуру обновления TableGrid при нажатии кнопки ЗАКРЫТЬ предыдущей формы.
что то типа
procedure Form1_Button7_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form1.TableGrid1........end;
или только SQL запросом (Select)?
Все намного проще.
я select пропустил.
Здравствуйте.
Ругается на a.otvet_data = is Null.
Пробовал a.otvet_data = '' так же выходит ошибка
procedure Form_oth_Button6_OnClick (Sender: TObject; var Cancel: boolean);
begin
if (not isAdmin) then
Form_oth.Button6.dbSQL := 'distinct a.id, b.name, a.vhod_numer, a.vhod_data, a.otvet_data, a.otvet_numer '+
'from zapros a '+
'join departament b on a.id_departament=b.id '+
'where a.otvet_data = is Null and a.id_departament = '+ inttostr (iddepartament) +
else
Form_oth.Button6.dbSQL := 'distinct a.id, b.name, a.vhod_numer, a.vhod_data, a.otvet_data, a.otvet_numer '+
'from zapros a '+
'join departament b on a.id_departament=b.id '+
'where a.otvet_data = is Null ';
end;
Скрипт в MySQL проходит без ошибок.
select distinct a.id, b.name, a.otvet_data, a.otvet_numer
from zapros a
join departament b on a.id_departament=b.id
where a.otvet_data IS NULL
Здравствуйте.
Как правильно прописать запись значения DateTimePicker4?
procedure Form_Main_1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
SQLExecute('INSERT INTO zapros (otvet_data, otvet_numer) VALUES ('''+Form_Main_1.DateTimePicker4.sqldate+''', '''+form_Main_1.Edit3.Text+''') WHERE ('''+IntToStr(idZapr)+''')');
end;
Ошибка в SQL запросе
SQLExecute('INSERT INTO zapros (otvet_data, otvet_numer) VALUES (''2020-05-17 00:00:00.000'', '28/0569') WHERE ('20')
Спасибо. Код отработал.
Здравствуйте.
Как написать CONCAT в вычисляемом поле для таблицы a
tab a
id.a | вычисляемое поле (???)
1 25, 35, 15
2 7, 9
tab b
id.b | id_a | id_c
1 1 25
2 1 35
3 1 15
4 2 7
5 2 9
My Visual Database → Posts by Andrei
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi