Отправил на support@drive-software.com
2 2015-04-13 10:13:15
Re: Поиск дубликатов. Ошибка при поиске (3 replies, posted in Russian)
Как я понял- проблема имеется с поиском по ключевым полям. Уважаемый DriveSoft, не подскажете как можно решить данную проблему?
3 2015-04-12 10:39:57
Topic: Поиск дубликатов. Ошибка при поиске (3 replies, posted in Russian)
Дабы не засорять тему в FAQ, опишу проблему тут.
Имеет скрипт
function CheckDublicate (Action, sTable, sField, sValue: string; id: integer;): boolean;
var
s: string;
begin
result := False;
s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE '+sField+' LIKE "' + sValue + '"');
if StrToInt(s) > 0 then result := True;
end;
procedure zapic_na_priem_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
if CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'last_name', zapic_na_priem.Last_Name.Text, zapic_na_priem.Button4.dbGeneralTableId) AND
CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'first_name', zapic_na_priem.First_Name.Text, zapic_na_priem.Button4.dbGeneralTableId) AND
CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'Patronymic', zapic_na_priem.Patronymic.Text, zapic_na_priem.Button4.dbGeneralTableId) AND
CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'Address', zapic_na_priem.Address.Text, zapic_na_priem.Button4.dbGeneralTableId) AND
CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'day', FormatDateTime('yyyy-MM-DD 00:00:00.000', zapic_na_priem.data.Date), zapic_na_priem.Button4.dbGeneralTableId) AND
CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'id_price', Inttostr(zapic_na_priem.Usluga.dbItemID), zapic_na_priem.Button4.dbGeneralTableId)
then
begin
ShowMessage('Данный прием уже существует.');
Cancel := True;
end;
end;
Трабла в следующем. Если не использовать Combobox (zapic_na_priem.Usluga.dbItemID), то все работает норм, в противном случае срабатывает проверка на дубль вне зависимости от полей 'last_name', 'first_name', 'Patronymic', и 'Address', однако возможно записать на другой день.
Например. Сидорова Ивана Ивановича записываю на прием на 01.04.2015 на "лечение зуба" (id_1). Еще раз его открываю, пытаюсь записать его на "повторный прием" (id_2). Если в таблице 'zapicnapriem' присутствует хоть одна запись, где указано id_2 (вне зависимости от имени, отчества...) то выдается дубль. Может значение Combobox по другому как-то берется?
Update
Проверяю на одном человеке. Действительно, проблема с Combobox. Если в нем не выбираю значения (id_price), то позволяет записать.
Значение id_price меняются, проверял через
zapic_na_priem.Edit1.Text:=Inttostr(zapic_na_priem.Usluga.dbItemID);
4 2015-04-11 00:13:36
Re: [Скрипт] Проверка дубликат записи (13 replies, posted in FAQ)
Подскажите, а как можно сравнить значение, выбираемое с ComboBox?
Update.
Разобрался
CheckDublicate(zapic_na_priem.dbAction, 'zapicnapriem', 'id_price', Inttostr(zapic_na_priem.Usluga.dbItemID), zapic_na_priem.Button4.dbGeneralTableId)
5 2014-10-05 04:07:01
Re: [Решено] SQL-запрос с суммированием (1 replies, posted in Russian)
Решил.
SELECT
SUM(cena)
,Kvit
,strftime('%d.%m.%Y', zapicnapriem.day) as date
From
ZapicNaPriem
LEFT OUTER JOIN Cena ON Cena.id=zapicnapriem.id_Cena
GROUP BY Kvit
6 2014-10-05 01:50:11
Topic: [Решено] SQL-запрос с суммированием (1 replies, posted in Russian)
Доброго времени суток.
Имеется sql-запрос вида
SELECT
Kvit
,strftime('%d.%m.%Y', zapicnapriem.day) as date
,Cena
From
ZapicNaPriem
LEFT OUTER JOIN Cena ON Cena.id=zapicnapriem.id_Cena
В результате в гриде получаем следующее
Но есть проблема - в базе есть несколько поле с одинаковым значением Kvit, и для каждого разная цена.
Можно ли сделать, что бы в гриде отображалось одно значение Kvit, а поле Cena складывалось?
7 2014-08-28 14:06:00
Re: [Решено] Нестандартное значение Counter (2 replies, posted in Russian)
Огромное спасибо!
8 2014-08-28 02:55:29
Topic: [Решено] Нестандартное значение Counter (2 replies, posted in Russian)
Доброго времени суток.
Суть сабжа: значение Counter - это номер платежного поручения. В реализации не возникает вопросов если номера начинаются с любого значения, отличного от "0". На данный момент номер "000652" реализуется через значение Counter "652" + в отчете дописывается 000[Report."Counter"]. Некрасиво, в базе не полный номер, но по другому не придумал. Собственно, что хочу переделать. Значение "000ххх" в базу не записать. Есть вариант перед нулями поставить букву, но возникают несколько вопросов: (интересует, правильный ли ход мыслей)
1. Сделать 2 String переменные, A=буква, B=000 и в таблицу через SQL-запрос вносить значение А+B+Counter.
2. Если Counter=999, то каким образом изменить значение на B=00. Правильно ли будет поставить запрос, что то вроде
if Counter.MaxValue > 999
Then
S:=00
if Counter.MaxValue > 9999
Then
S:=0
Может все проще можно сделать и я не в ту сторону смотрю? Искал пример реализации, но к сожалению даже идеи не нашел.
9 2014-08-22 16:42:51
Re: Сумма прописью (3 replies, posted in Russian)
А как быть, если используется не поле в базе, а сумма?
[SUM(<Report."Predoplata">,MasterData1)]
10 2014-08-19 15:29:42
Topic: [Решено] Сложный SQL-запрос. Union (1 replies, posted in Russian)
Доброго времени суток.
DriveSoft, прошу помощи - 3 день голову ломаю...
Имеется две таблицы и 2 SQL-запроса.
Структура первой таблицы ZapicNaPriem
id INTEGER PRIMARY KEY ASC,
Day TEXT,
Time TEXT,
id_Specializ INTEGER,
First_Name TEXT,
Patronymic TEXT,
id_Doctors INTEGER,
id_Price INTEGER,
id_Cena INTEGER,
Address TEXT,
Phone TEXT,
Kvit TEXT,
Last_Name TEXT,
id_Referal INTEGER,
id_Reforg INTEGER,
id_RefSpec INTEGER
Структура 2 таблицы MKB10Client
id INTEGER PRIMARY KEY,
id_mkb10 INTEGER,
id_ZapicNaPriem INTEGER,
Ishod TEXT
Связь между таблицами ZapicNaPriem.id = MKB10Client. id_ZapicNaPriem
2 отдельно работающих sql-запроса
SELECT
strftime('%d.%m.%Y', ZapicNaPriem.Day) AS Day
,Specializ.Spec
,Doctors.Fio
,Price.NameUsluga
,ZapicNaPriem.First_Name
,ZapicNaPriem.Last_Name
,ZapicNaPriem.Patronymic
FROM
ZapicNaPriem
LEFT OUTER JOIN Doctors ON Doctors.id=zapicnapriem.id_Doctors
LEFT OUTER JOIN Specializ ON Specializ.id=zapicnapriem.id_Specializ
LEFT OUTER JOIN Price ON Price.id=zapicnapriem.id_Price
WHERE
ZapicNaPriem.First_Name LIKE '{First_Name}' and
ZapicNaPriem.Last_Name LIKE '{Last_Name}' and
ZapicNaPriem.Patronymic LIKE '{Patronymic}'
2 запрос
SELECT
mkb10client.id
,mkb10.Code
,mkb10.Diagnoz
,Ishod
FROM
mkb10client
LEFT OUTER JOIN MKB10 ON MKB10.id=mkb10client.id_mkb10
where
id_ZapicNaPriem = {id}
Смысл - на одну запись в таблице ZapicNaPriem имеется несколько записей в таблице mkb10client. (аналогия Вашего примера тел. справочника)
Что хочу.
Долго думал как объяснить - проще скрином наверное ) Желтым выделены данные со 2 таблицы.
Т.е. хочу создать Report, в котором на одну строку с ZapicNaPriem добавить в столбик записи с mkb10client при условии ZapicNaPriem.id = MKB10Client. id_ZapicNaPriem. Пытаюсь через UNION, но не могу понять как во втором запросе правильно прописать условие поиска с другой таблицы
....
from
mkb10client
....
where
id_ZapicNaPriem = ZapicNaPriem.id
.
11 2014-08-12 09:07:11
Re: Вывод списка по клику и сохранение в разные таблицы. (7 replies, posted in Russian)
Еще вопрос - данный синтаксис для запроса с другой формы правильный?
....
WHERE ZapicNaPriem.id = Form2.{TableGrid1};
12 2014-08-12 00:46:30
Re: Вывод списка по клику и сохранение в разные таблицы. (7 replies, posted in Russian)
1. А как передать потом данный запрос
SQLExecute('SELECT Day, Time, id_Specializ, Last_Name, First_Name, Patronymic, id_Doctors, id_Price, id_Cena, Address, Phone, Kvit, id_Referal, id_Reforg, id_RefSpec, id_mkb10, Ishod FROM ZapicNaPriem WHERE ZapicNaPriem.id = EditPacient.{TableGrid1};')
гриду?
2. Пытался получить значение id в Edit.
Edit_Pacient.Edit2.Text:= VarToStr(SQLExecute('Select id FROM ZapicNaPriem WHERE ZapicNaPriem.id = {TableGrid1};'));
, но если форма вызвана через "Показать запись", а не через "Новая запись", то значение в Edit1 не отображается.
Тупик
13 2014-08-11 12:05:30
Re: Вывод списка по клику и сохранение в разные таблицы. (7 replies, posted in Russian)
А как быть, если гриды расположены на разных формах? Хочу сделать через SQL-запрос
....
WHERE ZapicNaPriem.id = Form2.{TableGrid1};
вот как правильно указать выбранную строку в гриде на другой форме?
14 2014-08-06 17:56:42
Re: Вывод списка по клику и сохранение в разные таблицы. (7 replies, posted in Russian)
15 2014-08-06 16:48:39
Re: [Решено] Вставка значения Edit в SQL запрос. (3 replies, posted in Russian)
Пытался через кнопку "Sql запрос", но я так понял не получится. Пытаюсь через скрипт, объявить S: String и в Select вставить переменную...Пока гуглю как вставить переменную в sql запрос, но везде только для Where. (
procedure Edit_pacient_Button8_OnClick (Sender: string; var Cancel: boolean);
var
s: String;
begin
S:=Edit_pacient.Edit1.Text;
SQLExecute('INSERT INTO Temp (Day, Time, id_Specializ, Last_Name, First_Name, Patronymic, id_Doctors, id_Price, id_Cena, Address, Phone, id_Referal, id_Reforg, id_RefSpec, Kvit) SELECT Day, Time, id_Specializ, Last_Name, First_Name, Patronymic, id_Doctors, id_Price, id_Cena, Address, Phone, id_Referal, id_Reforg, id_RefSpec,kvit FROM zapicnapriem2 WHERE ZapicNaPriem2.First_Name LIKE '{First_Name}' and ZapicNaPriem2.Last_Name LIKE '{Last_Name}' and ZapicNaPriem2.Patronymic LIKE '{Patronymic}';');
end;
Пока две проблемы:
1. Не знаю как в SELECT прописать вместо kvit переменную S.
2. Не могу найти где ошибся в синтаксисе. Выдает `)` expected.
16 2014-08-06 10:31:18
Topic: [Решено] Вставка значения Edit в SQL запрос. (3 replies, posted in Russian)
Доброго времени суток.
Возможно ли реализовать следующее.
Имеется Table1 и Table2 (2-я база используется как temp).
Имеется SQL-запрос
INSERT INTO Table2
(Day, Time, id_Specializ, Last_Name, First_Name,
Patronymic, id_Doctors, id_Price, id_Cena, Address,
Phone, id_Referal, id_Reforg, id_RefSpec, Kvit)
SELECT
Day, Time, id_Specializ, Last_Name, First_Name,
Patronymic, id_Doctors, id_Price, id_Cena, Address,
Phone, id_Referal, id_Reforg, id_RefSpec, kvit
FROM Table1
Значение Kvit в обоих базах null.
Требуется при выполнении запроса добавить в Table2 в ячейку Kvit значение Edit1.
Update.
Я так понял нужно использовать
...
ParamByName('kvit').Value:=Form1.edit1.text
FROM Table1
, но выдается ошибка near ".": syntax error
17 2014-08-06 09:23:26
Re: [Решено] Значение Record_count (8 replies, posted in Russian)
Век живи -век учись. Спасибо.
18 2014-08-06 02:25:59
Re: [Решено] Значение Record_count (8 replies, posted in Russian)
Еще вопрос.
1.Пытаюсь получить значение последней записи (так же интересует "последняя запись+1")
Edit_pacient.Edit1.Text:= IntToStr(SQLExecute('SELECT record_count FROM Counter WHERE id = ' + IntToStr(Last_Insert_id('Counter')) +';'));
но возвращается 0. Где я ошибаюсь?
19 2014-08-02 07:55:45
Re: хотелки (237 replies, posted in Russian)
Добавить в меню "О программе" подменю "Справка". Как вариант - в корне проекта (или в папке Help) располагался бы файлик help.chm, который отображался бы по вызову подменю.
20 2014-08-01 00:32:36
Re: хотелки (237 replies, posted in Russian)
Есть FR https://code.google.com/p/laalaa/downlo … ys-Windows с поддержкой импорта Word/Excel. Вы отдельно запускаете FR, делаете импорт и сохраняете в файл отчетов.
21 2014-08-01 00:14:13
Re: Вопрос по FastReport (2 replies, posted in Russian)
Спасибо за линк.
Конкретного ответа не нашел, но смысл реализации понял. (может кому потребуется)
1. Дублирование половины листа.
После Footer основного отчета создаете Subreport (растягивать на лист не обязательно). На созданном Page2 делаете копию Page1. Одно "но" - PageHeader в SubReport не отображается при печати. Решается копированием данных с PageHeader Page1 и вставкой после Footer на Page1. (т.е. прямо на SubReport). Header, MasterData и Footer на Page2 создаете новые (не забываем привязывать MasterData к Report). Недостаток этого способа: если отчет больше половины листа - subreport на Page2 отобразится неправильно. Если кто найдет другой способ - поделитесь.
2. Печать на 2-м листе (имеется ввиду не продолжение отчета, а новая форма с данными из Report).
Просто разместить данные с Report не получится. Необходимо создать новые Header, MasterData (с привязкой к Report) и Footer. В моем случае это был договор на A4 со вставками ФИО и даты и т.д. Вы можете просто растянуть Header на весь лист - все данные с Report отображаются корректно.
22 2014-07-31 11:00:54
Topic: Вопрос по FastReport (2 replies, posted in Russian)
Имеется отчет на половину листа А4. Возможно ли встроенными средствами FR сделать копию на вторую половину листа?
Update
Разобрался, это делается через SubReport.
Появился другой вопрос. Создаю Page3 (на page2 subreport). Хочу сделать просто набор текста со вставками из Report. Текст отображает, но, например Memo [Report."Phone"] нет.
23 2014-07-30 13:54:43
Re: [Решено] Значение Record_count (8 replies, posted in Russian)
Понял. Еще одно уточнение. Можно ли сделать, что бы в условии WHERE была не константа (id=5), а последняя запись в таблице? Т.е. своеобразный счетчик.
24 2014-07-30 12:00:59
Re: [Решено] Значение Record_count (8 replies, posted in Russian)
Не меняет значение.
Я собственно вот это хотел сделать, но тоже на работает.
SQLExecute ('UPDATE tablename SET record_count=record_count+1;');
В tablename кроме счетчика полей нет.
25 2014-07-30 00:51:39
Topic: [Решено] Значение Record_count (8 replies, posted in Russian)
Доброго времени суток.
Возможно ли через скрипт (sql-запрос) изменить начальное значение счетчика?
Например. В базе стоит счетчик с начальным значением (COUNTER:8001). Как программно изменить на 8002?