Спасибо! вроде заработало, так делал но с Now(), без () не додумался, потестирую. еще раз спасибо!
102 2017-09-06 06:24:44
Re: Открытие файла через TableGrid (24 replies, posted in Russian)
Добрый день! не стал плодить темы, подскажите что не так
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[4,i] <> 'Выполнено' and StrToDateTime(Form1.GridEmployees.Cells[3,i]) < Now() then Form1.GridEmployees.Cell[3,i].Color := clRed;
end;
end;
по отдельности каждое условие работает, как только связываю and ошибка "Incompatible types"
103 2017-08-31 04:01:35
Re: Открытие файла через TableGrid (24 replies, posted in Russian)
1. Спасибо!!!
2. Набросал проект если получится с multiselect будет оч неплохо. планируется для канцелярии наподобии документооборота в дальнейшем с напоминаниями, отчетами и т. д.
104 2017-08-30 04:13:16
Topic: Открытие файла через TableGrid (24 replies, posted in Russian)
добрый день!
1) подскажите к записи привязан файл с помощью компонента DBFile, возможно ли нажав 2 кликом в TableGrid по записи сразу открывался файл без нажатия на компонент DBFile -> открыть файл?
2)Возможно ли использую свойство multiselect компонента ComboBox сразу нескольким записям привязать файл DBFile?
105 2017-08-10 09:41:36
Re: Запрет на идентичеую запись в таблицу (3 replies, posted in Russian)
106 2017-04-24 09:17:34
Re: Привязка файла или изображения (1 replies, posted in Russian)
107 2017-03-29 09:16:42
Re: Повторяющиеся записи (3 replies, posted in Russian)
может тут посмотреть http://myvisualdatabase.com/forum/viewtopic.php?id=2124
108 2016-12-18 08:33:01
Re: [Скрипт] Импорт CSV файла в базу (33 replies, posted in FAQ)
да все теперь понятно! работает ок! СПАСИБО!!!!!! а можно при импорте или после импорта по нажатию на кнопку, чтобы значения 2 полей сливались в 3-е поле и затем символы этого 3- поля заменялись в определенном порядке напрмер а:=j или й:=v например 1поле = а, 2поле =й должно при импорте получиться 3поле=jv. Если не сложно натолкните на мысль, ну если нет то и так пойдет импорт в принципе устраивает
109 2016-12-16 02:36:56
Re: [Скрипт] Импорт CSV файла в базу (33 replies, posted in FAQ)
я извиняюсь за назойливость, например в cvs файле есть записи в поле Lat начинается с символа ";" этот символ соответсвует кkавиша ж=;
так вот при импорте где присутствует ; запись в поле лат обрывается не импортируется до конца.
например записи в cvs
Nkart FIO SEX Lat
Ж760001 76 Жукова Пелагея Васильевна Ж ;760001 ;erjdf Gtkfutz Dfcbkmtdyf
Ж760002 76 Жиманова Надежда Александровна Ж ;760002 ;bvfyjdf Yflt;lf Fktrcfylhjdyf
Ж760003 76 Жиров Никита Андреевич М ;760003 ;bhjd Ybrbnf Fylhttdbx
что получается при импорте
Nkart FIO SEX Lat
Ж760001 76 Жукова Пелагея Васильевна Ж "
Ж760002 76 Жиманова Надежда Александровна Ж "
Ж760003 76 Жиров Никита Андреевич М "
также если символ ; стоит в середине слова получается так
cvs
Д780069 78 Долженко Екатерина Андреевна Ж L780069 Ljk;tyrj Trfnthbyf Fylhttdyf
при импорте
Д780069 78 Долженко Екатерина Андреевна Ж L780069 "Ljk
т.е. доходит до символа ; и обрыв
и при импорт1 тоже самое.
Итого: импорты работают русские символы все без проблем импортируются, но в часности символ ; не импортирует
ну и попутный вопрос как можно прервать импорт какой скрипт нужен
110 2016-12-15 02:54:27
Re: [Скрипт] Импорт CSV файла в базу (33 replies, posted in FAQ)
Версия 2,8. Если не трудно как будет время посмотрите импорт2 (где загружается справочник) выскакивает ошибка. в импорте1 не выдает ошибку, но и сисмволы не загружает на людей у кого встречаются в именах буквы "ж", "э", "х", "ю", "б". обьясню для чего: в поле LAT импортируются значения полей NKART+FIO, только все буквы русской раскладки клавиатуры заменены на соответсвующие латинские, т.е. й=q ц=w... х=[... ж=;. для чего - для того чтобы можно было сформировать qr код, сканер не читает латиницу, в qr код да все засовывается и кирилица читается телефоном-приложением, но usb-сканером упорно не хочет воспримнимать кирилицу (может что то со сканером). итог я в qr код засовываю латинские символы, которые соответсвуют русской раскладке, а сканер ставлю в режим эмуляции клавиатуры, и сканер просто печатает латинские символы в русской раскладке, ух да понимаю, что это костыль с изолентой, но я не нашел др выхода. заранее спасибо!!!
111 2016-12-13 07:34:40
Re: [Скрипт] Импорт CSV файла в базу (33 replies, posted in FAQ)
хм вот скрипт вро де все экранировано, этим скриптом загружаю запись где нет никах символов одни лат буквы поле lat все ок, но если встречается символ ";" то запись получается вида например должно получится fdr;tdy, а импортируется fdr т.е. только до символа ";" дальше обрыв, затем начинается обработка следующей записи вот скрипт 1-го импорта
procedure Form1_Button4_OnClick (Sender: string; var Cancel: boolean);
var
OpenDialog: TOpenDialog;
sl: TStringList;
arrStr: array of string;
i,c: integer;
begin
SQLExecute('delete from db_main') ;
OpenDialog := TOpenDialog.Create(Form1);
OpenDialog.InitialDir := ExtractFileDir(Application.Exename);
if OpenDialog.Execute then
begin
sl := TStringList.Create;
sl.LoadFromFile (OpenDialog.FileName);
c := sl.Count - 1;
for i := 0 to c do
begin
arrStr := SplitString(sl[i], ';');
if arrStr[0] <> '' then arrStr[0] := ''''+ ReplaceStr(arrStr[0], '''', '''''') + ''''
else arrStr[0] := 'NULL';
if arrStr[1] <> '' then arrStr[1] := ''''+ ReplaceStr(arrStr[1], '''', '''''') + ''''
else arrStr[1] := 'NULL';
if arrStr[2] <> '' then arrStr[2] := ''''+ ReplaceStr(arrStr[2], '''', '''''') + ''''
else arrStr[1] := 'NULL';
if arrStr[3] <> '' then arrStr[3] := ''''+ ReplaceStr(arrStr[3], '''', '''''') + ''''
else arrStr[1] := 'NULL';
if arrStr[4] <> '' then arrStr[4] := ''''+ ReplaceStr(arrStr[4], '''', '''''') + ''''
else arrStr[1] := 'NULL';
SQLExecute ('INSERT INTO db_MAIN (Nkart, uch, FIO, SEX, lat) VALUES ('+ arrStr[0] +','+ arrStr[1]+','+ arrStr[2]+','+ arrStr[3]+','+ arrStr[4]+');');
Form1.Label2.Caption := IntToStr(i+1) + ' of ' + IntToStr(c+1);
Application.ProcessMessages;
end;
sl.Free;
Form1.TableGrid1.dbUpdate;
end;
OpenDialog.Free;
end;
попробывал из первого поста в cvs файл в имена и фамилии вставить символы ";" "[", при импорте также обрезалось т.е в базу загрузилось только до символов ; или [, не могу разобраться
112 2016-12-09 06:12:50
Re: [Скрипт] Импорт CSV файла в базу (33 replies, posted in FAQ)
Добрый день! опробывал 2 этих (с простой записью в таблицу и с заполнением справочника) импорта все ок, но если в cvs файле в записи содержится символы ; [ ] ' . , то в первом случае в базу эти сисмволы не загружаются, во втором случае импорт затыкается. Возможно ли импортировать записи с такими символы, при ручном ввводе (добавление записей через форму) сохраняютя эти сисмволы без проблем.
113 2016-12-03 02:58:15
Re: штрих код + кирилица (3 replies, posted in Russian)
спасибо! телефоном приложением прочитался, в понедельник попробую сканером, qr код кажется может сразу несколько полей выводить, только я не понял как в properties могу выбрать только 1 поле, несколько полей только скриптом? про несколько полей не срочно это так планы на будущее и для общего развития
114 2016-12-02 03:44:38
Topic: штрих код + кирилица (3 replies, posted in Russian)
Добрый день! Подскажите кто-нибудь есть номер например Ф050201 генерируется штрих код все ок, но когда считывает сканер то кирилическая буква не читается получается 050201 (пробывал разными сканерами в том числе и с телефона приложением результат один и тот же кирилице не читает), если ставлю латиницу D051512 то все ок. перепробывал все виды штрих кодов не помогло. что нужно сделать? перекодировать как то кирилицу в латиницу, но надо обязательно что бы при считывании сканером в текстовый документ выводилось код с кирилицей? подскажите ктонибудь, в google не нашел толком, в описании fasreport тоже толком про это не написано, на форуме тоже ничего про кирилицу не нашел
115 2016-11-17 04:55:35
Re: Вычислить DateTimePicker - поле дата (5 replies, posted in Russian)
Спасибо!
но что то не заработало если просто поставить {DateTimePicker2}, это делается в скрипте при нажатии бутона срабатывает скрипт и открывается другая форма, {DateTimePicker2} находится на тойже форме что и бутон
сделал так
SQLExecute('insert into temp_z (id_osn, id_mkb3, data_uchet1,dead_v_tech) select osn.id, osn.id_mkb3, osn.data_uchet1,osn.id_deadtech from osn where (strftime(''%Y'', data_uchet1, ''+1 years'') = strftime(''%Y'', '''+FormatDateTime('yyyy-MM-dd 00:00:00.000', Reports.DateTimePicker2.DateTime)+'''))');
вроде работает грубовато, но работает
пробывал так
SQLExecute('insert into temp_z (id_osn, id_mkb3, data_uchet1,dead_v_tech) select osn.id, osn.id_mkb3, osn.data_uchet1,osn.id_deadtech from osn where (strftime(''%Y'', data_uchet1, ''+1 years'') = strftime(''%Y'','' {DateTimePicker2}''))');
не заработало, ошибку не выдает, но и результата нет, в temp_z ничего не записывает
116 2016-11-16 01:32:19
Re: Вычислить DateTimePicker - поле дата (5 replies, posted in Russian)
добрый день!
как в код, который выше правильно место 'now' написать DateTimePicker. если грубо как высчитать к примеру возраст не от текущей даты, а от той даты которая в DateTimePicker.
117 2016-11-15 05:50:32
Topic: Вычислить DateTimePicker - поле дата (5 replies, posted in Russian)
Добрый день! Люди подскажите, я знаю что это просто, но что то не так: надо Вычислить DateTimePicker - поле дата. т.е. надо отобрать людей которые записались в прошлом году. например в DateTimePicker = 31.12.2016, в базе поле Data = 01.01.2015 разность должна быть = 1, вычитать надо только года. сейчас сделано текущая дата - поле Data, но надо что бы место текущей даты стояло DateTimePicker
where ((date(''now'') - data_uchet1 + (case when strftime(''now'') < strftime( data_uchet) then -1 else 0 end)=1)
этот код работает с текущей датой, а вот с DateTimePicker никак не могу, результат с DateTimePicker всегда получается -2017 не могу понять, где то может символ не туда ставлю
118 2016-10-19 05:41:15
Re: формирование временной таблицы (1 replies, posted in Russian)
вопрос снят, разобрался
119 2016-10-18 04:25:49
Topic: формирование временной таблицы (1 replies, posted in Russian)
Люди добрые, помогите!
Есть временная таблица, заполняется из таблицы OSN полями id, id_sex, id_mkb1, id_mkb2, id_mkb3, data_diag 1, data_diag2, data_diag3 заполняю ее так
SQLExecute('insert into temp (id_osn, id_sex, id_mkb1, osn.data_diag1 ) SELECT osn.id, osn.id_sex, osn.id_mkb1, osn.data_diag1 FROM osn where ((data_diag1>='''+FormatDateTime('yyyy-MM-dd 00:00:00.000', form1.DateTimePicker1.DateTime)+''')and(data_diag1<='''+FormatDateTime('yyyy-MM-dd 00:00:00.000', Form1.DateTimePicker2.DateTime)+'''))');
SQLExecute('insert into temp (id_osn, id_sex, id_mkb2, data_diag2) SELECT osn.id, osn.id_sex, osn.id_mkb2, osn.data_diag2 from osn where ((data_diag2>='''+FormatDateTime('yyyy-MM-dd 00:00:00.000', form1.DateTimePicker1.DateTime)+''')and(data_diag2<='''+FormatDateTime('yyyy-MM-dd 00:00:00.000', Form1.DateTimePicker2.DateTime)+'''))');
SQLExecute('insert into temp (id_osn, id_sex, id_mkb3, data_diag3) select osn.id, osn.id_sex, osn.id_mkb3, osn.data_diag3 from osn where ((data_diag3>='''+FormatDateTime('yyyy-MM-dd 00:00:00.000', form1.DateTimePicker1.DateTime)+''')and(data_diag3<='''+FormatDateTime('yyyy-MM-dd 00:00:00.000', Form1.DateTimePicker2.DateTime)+'''))');
Хотелось чтобы таблица наполнилась так, если у пациента все три data_diag заполнении, то таких записей должно в temp 3 получится, если два data_diag, то 2 записи, так вот при таком скрипте, формируется 1 запись, в которой если три data_diag заполнены, то все поля заполнены, если две data_diag то 2 поля заполнены, как быть подскажите.
Для чего надо: хотел count подсчитать
Если у пациентов к примеру у трех заполненно 2 диагноза, а у одного 3 диагноза, то в отчете должна подсчитаться цифра 9 т. е. 3 пациента *2 + 1 пациент *3 = 9
120 2016-09-16 08:21:57
Re: Cross tab + sql (10 replies, posted in Russian)
Нашел другой способ.
помещать данные запроса прям в таблицу
SQLExecute('insert into repf (mk,sum,v1,v2,v3,v4) values (("C03-C06, C09 М"),(SELECT count(*) FROM osn WHERE ....
затем результат выводить в grid и уже потом в эксель, при 87 записях таблицы будет 87 запросов, перед каждым нажатием "Сформировать отчет" таблица будет чиститься
Спасибо!
121 2016-09-14 07:01:28
Re: Cross tab + sql (10 replies, posted in Russian)
вроде разобрался, нашел ошибку, пытаюсь сделать огромную таблицу состоящую из 2000 ячеек, надеюсь он не будет зависать при обработке базы из 5 тыс человек.
вопрос знатокам может есть способ другой, сейчас буду делать, по странично на каждую страничку будет своя кнопка или комбобоксом еще не решил. на странице примерно будет 400 ячеек, соответсвенно и в скрипте будет 400 переменных которые будут ложится в ячейки. Вопрос а надо как то память очищать пр закрытии отчета, значение переменных из памяти тоже чистятся?
или вообще может есть способ более простой реализовать такой отчет?
122 2016-09-14 01:57:35
Re: Cross tab + sql (10 replies, posted in Russian)
я так пробывал выдает ошибка синтаксис ерор, пытался всячески писать ругался на date(now), на case
a10:=SQLExecute('SELECT count(*) FROM osn WHERE (osn.id_sex=1)and(osn.id_mkb>=1)and(osn.id_mkb<=500)and((date(now) - dr + (case when strftime(%m-%d, now) < strftime(%m-%d, dr) then -1 else 0 end))=30)');
я понимаю что туплю, если удаться реализовать такой отчет, руководство вынужденно будет приобрести лицензию на MVD, потомучто функция SQLExecute реализовано в отчетах только с 2.8
123 2016-09-13 04:51:33
Re: Cross tab + sql (10 replies, posted in Russian)
Дмитрий! Спасибо!
Следом еще вопрос:
В базе поле Age вичисляемое по дате рождения, считает все правильно.
в FastReports делаю так
procedure Cross1OnBeforePrint(Sender: TfrxComponent);
var a10 :integer;
begin
a10:=SQLExecute('SELECT count(*) FROM osn WHERE (osn.id_sex=1)and(osn.id_mkb>=1)and(osn.id_mkb<=500)and(osn.age=30)');
with Cross1 do
begin
AddValue(['C00-C0099 M'], [1], [a10]);
end;
end;
begin
end.
получается поле age символьное не считает, выдает ошибка, в AddValue можно запихать только число?
если я убираю osn.age=30 все норм
или может быть можно вычис поле возраст(age) сделать чтоб в базу записывалось не символьное поле, а целое число
вот сейчас понял вычисляемое поле - это поле не записывается в базу? как можно сделать чтобы поле Age при запуске программы или запуске отчета пересчитывалось и значение возраста записывалось в базу, это поле очень нужно, вручную ставить нельзя, возраст у человека изменяемый
или возможно ли сделать на форме кнопку "подсчитать возраст", которая бы высчитывала бы возраст от сегоднешней даты - дата рождения и изменяла бы записи поля age таблицы osn
124 2016-09-09 03:52:08
Re: Cross tab + sql (10 replies, posted in Russian)
в FastReports
делаю так ругается на SQLExecute "Undeclared identifier:SQLExecute"
procedure Cross1OnBeforePrint(Sender: TfrxComponent);
var s, a:integer;
begin
s:=SQLExecute('SELECT count(*) FROM osn WHERE (osn.vozrast=35) and (osn.sex=М)');
a:=SQLExecute('SELECT count(*) FROM osn WHERE (osn.vozrast=35) and (osn.sex=Ж)');
with Cross1 do
begin
AddValue(['C00-C0099 M'], [2], [s]);
AddValue(['C00-C0099 Ж'], [1], [a]);
end;
делаю так все нормально
procedure Cross1OnBeforePrint(Sender: TfrxComponent);
var s, a:integer;
begin
s:=500;
a:=10;
with Cross1 do
begin
AddValue(['C00-C0099 M'], [2], [s]);
AddValue(['C00-C0099 Ж'], [1], [a]);
end;
этот же скрипт в MVD работает
procedure Form1_Edit6_OnClick (Sender: string);
var s,a:integer;
begin
s:=SQLExecute('SELECT count(*) FROM osn WHERE (osn.vozrast=35) and (osn.sex=М)');
a:=SQLExecute('SELECT count(*) FROM osn WHERE (osn.vozrast=35) and (osn.sex=Ж)');
Form1.Edit6.Text := inttostr (s);
Form1.Edit7.Text := inttostr (a);
end;
FastReports не знает SQLExecute?
может можно что бы данные запросов передались в шаблон экселя? такого рода запросов в отчете будет примерно 300 на кажд ячейку свой запрос.
125 2016-09-08 14:29:35
Re: Cross tab + sql (10 replies, posted in Russian)
Хотел сделать таблицу в отчете с помощью компонента Cross tab. только что бы каждая ячейка таблицы заполнялась с помощью скрипта в котором был бы запрос в главную таблицу. запрос будет считать с помощью SELECT count(*) только количество строк по WHERE (условие). например в ячейку 1.1 положить количество строк удовлетворяющее условию возраст=35 + мужчина, а например в ячейку 1.2 положить количество строк удовлетворяющее условию возраст 35 + женщина.
ячейка 1.1
procedure Cross1OnBeforePrint(Sender: TfrxComponent);
var
s:string;
begin
s := SQLExecute('SELECT count(*) FROM osn WHERE (osn.vozrast=35) and (osn.sex=М)'); //ругается на SQLExecute неизвестный идентификатор
//что надо написать чтобы Cross1 вставилось значение переменной s
end;
ячейка 1.2
procedure Cross2OnBeforePrint(Sender: TfrxComponent);
var
a:string;
begin
a := SQLExecute('SELECT count(*) FROM osn WHERE (osn.vozrast=35) and (osn.sex=Ж)');
end;
делал sql отчет на кнопку, но туда можно засунуть только 1 запрос, подскажите как сделать может какой другой есть способ. в итоге должна получиться большая таблица я чейки котрой будут заполняться запросами функцией count(*)
не ругайте сильно я только учусь