продолжаем детектив... если в примере test2 от sibprogsistem повесить события на OnClick, то происходит вылет программы с неизвестной ошибкой
таким образом, у меня складывается впечатление, что есть какой-то баг в MVD...
76 2018-08-08 18:09:51
Re: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
77 2018-08-08 17:42:29
Re: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
фигня война... пошел целый детектив... судя по всему, я случайно заюзал имена какой-то MVD-шной переменной... после переименования checkbox'ов вылеты и сообщения об ошибках исчезли. и даже на OnClick все заработало:
procedure frmMeasurement_cbAllMeasurement_OnСlick (Sender: TObject; var Cancel: boolean);
begin
frmMeasurement.cbAllMeasurement.State := cbChecked;
frmMeasurement.cbMonthMeasurement.State := cbUnchecked;
end;
procedure frmMeasurement_cbMonthMeasurement_OnClick (Sender: TObject; var Cancel: boolean);
begin
frmMeasurement.cbMonthMeasurement.State := cbChecked;
frmMeasurement.cbAllMeasurement.State := cbUnchecked;
end;
однако... стоит выбрать второй чек-бокс, который cbAllMeasurement, то как ты ни нажимай на cbMonthMeasurement, больше галочка со второго чек-бокса не снимается, при этом снимается-ставится последовательно галочка на самом cbMonthMeasurement
78 2018-08-08 17:03:39
Re: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
попробуйте удалить базу данных и dll от него, мне тногда помогает
не помогло
79 2018-08-08 16:54:50
Re: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
А если реализовывать через CheckBox.State, то кусок кода:
procedure frmMeasurement_cbAllTime_OnMouseUp (Sender: TObject; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
frmMeasurement.сbForMonth.State := cbUnchecked;
frmMeasurement.cbAllTime.State := cbChecked;
end;
procedure frmMeasurement_сbForMonth_OnMouseUp (Sender: TObject; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
frmMeasurement.cbAllTime.State := cbUnchecked;
frmMeasurement.сbForMonth.State := cbChecked;
end;
вызывает следующее сообщение с ошибкой:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: Monitoring.exe
Версия приложения: 1.0.0.0
Отметка времени приложения: 5b6ac81b
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 6.1.7601.23572
Отметка времени модуля с ошибкой: 57fd02d3
Код исключения: c0000005
Смещение исключения: 0002ed2a
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: e8ad
Дополнительные сведения 2: e8adce1c2b9e7be834b4063ac3c53863
Дополнительные сведения 3: e8ad
Дополнительные сведения 4: e8adce1c2b9e7be834b4063ac3c53863
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
80 2018-08-08 16:14:52
Re: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
теперь какой-то
---------------------------
Monitoring
---------------------------
List index out of bounds (5)
---------------------------
ОК
---------------------------
выскакивает при нажатии на эти чек-боксы... меня уже клинит...
какой список? какие индексы на чек-боксе? хз...
а твой пример работает без проблем. хотя уже в точности повторил как у тебя.
81 2018-08-08 15:48:16
Re: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
интересно... а зачем еще и на MouseUp вешать?..
82 2018-08-08 15:17:11
Re: TableGrid.dbGetSQLStatemen (17 replies, posted in Russian)
хм... интересно... спасибо за костыль)
83 2018-08-08 14:02:31
Re: TableGrid.dbGetSQLStatemen (17 replies, posted in Russian)
так в том-то и дело, что в грид у меня настраивается вывод данных по умолчанию через свойства в инспекторе объектов в самой IDE... а фильтра уже меняют его состояние и наполнение. в том числе - меняют местами столбцы и даже другие столбцы добавляют. в том-то весь и прикол - вернуть грид в состояние "по умолчанию".
84 2018-08-08 13:59:15
Topic: два взаимосвязанных чек-бокса (12 replies, posted in Russian)
есть на форме два взаимосвязанных чек-бокса, смысл: выбран может быть только один из двух. реализовано это так через OnClick:
procedure frmMeasurement_cbAllTime_OnClick (Sender: TObject);
begin
frmMeasurement.сbForMonth.Checked := False;
frmMeasurement.cbAllTime.Checked := True;
end;
procedure frmMeasurement_сbForMonth_OnClick (Sender: TObject);
begin
frmMeasurement.cbAllTime.Checked := False;
frmMeasurement.сbForMonth.Checked := True;
end;
однако в запущенной программе при попытке пощелкать по ним происходит вылет программы без какого-либо сообщения с ошибкой. в чем прикол?
85 2018-08-08 12:56:17
Re: TableGrid.dbGetSQLStatemen (17 replies, posted in Russian)
то есть надо тогда заполнять грид в исходное состояние при помощи скрипта и SQL-запроса?
86 2018-08-08 12:54:33
Re: Создание сложного отчета - алгоритм решения проблемы. (34 replies, posted in Russian)
так... а если у меня кнопка не имеет никакого действия?..
87 2018-08-07 17:57:16
Re: Создание сложного отчета - алгоритм решения проблемы. (34 replies, posted in Russian)
при формировании отчета через кнопку с действием "отчет" предлагается выбор в чем открыть сформированный отчет - в превью, в дизайнере, в экселе, в ворде, в опен офисе, выгнать в pdf или html или даже в картинку формата tiff или jpeg
собственно, вопрос: как можно назначить то, в чем будет открыт отчет, средствами скрипта?
88 2018-08-07 15:39:33
Topic: TableGrid.dbGetSQLStatemen (17 replies, posted in Russian)
есть две формы - главная и вторичная. на второй форме есть грид. на событии OnShow второй формы висит код типа:
var tgMeasurementSQLQuery: string;
...
tgMeasurementSQLQuery := frmMeasurement.tgMeasurement.dbGetSQLStatement;
ShowMessage(tgMeasurementSQLQuery);
однако при показе второй формы месседж выскакивает совершенно пустым. почему?
задача стоит - сохранить запрос с изначальным заполнением грида сразу после показа формы, так как потом всякие фильтра могут изменить содержимое грида вплоть до изменения колонок с данными
89 2018-08-07 12:15:11
Re: Дата со строкой - в TDateTime (2 replies, posted in Russian)
О как... Не знал, спасибо.
90 2018-08-07 11:00:07
Topic: Дата со строкой - в TDateTime (2 replies, posted in Russian)
Че-то туплю совсем уже...
Есть строка формата "yyyy-MM-DD 00:00:00.0000" (например, "2018-03-23 00:00:00.0000"), так вот при выполнении этого кода:
settingDate := SQLExecute('SELECT settingDate FROM GroupPileList WHERE id=' + id_GroupPileList); // получаем settingDate // получили строку с датой
//settingDate := StringReplace(settingDate, '-', '/');
fDate := StrToDateTime(settingDate); // преобразовали строку в число TDateTime
settingDate := DateToString(fDate); // преобразуем в строку вида "1 января 1970"
выскакивает ошибка, мол, Invalid date and time... какого хрена-то? чего я не учёл?
91 2018-07-30 12:11:52
Re: Создание сложного отчета - алгоритм решения проблемы. (34 replies, posted in Russian)
Странно... После кучи манипуляций - заработало. Но я уже не берусь воспроизвести-рассказать то, что делал)))
92 2018-07-27 12:52:38
Re: Создание сложного отчета - алгоритм решения проблемы. (34 replies, posted in Russian)
нет, уничтожение датасетов поставьте в самый конец процедуры
Я так и сделал, однако при выдаче отчета выдается следующее:
The following error(s) have occured:
Dataset "CommitteeSettingData" does not exist
Dataset "SensorsSettingData" does not exist
что говорит о том, что уничтожение датасетов влияет на передачу данных в отчет
А вот если закомментить строки уничтожения датасетов - то все ОК.
93 2018-07-27 12:48:53
Re: Проблема при передаче компонентов в переменные FastReport (8 replies, posted in Russian)
В таком вариант - должен.
Form1.frxReport.Variables['My Variable 2'] := ''' + frmOrder.Label25.Text + ''';
94 2018-07-27 11:29:31
Re: Создание сложного отчета - алгоритм решения проблемы. (34 replies, posted in Russian)
О как! спасибо большое! сам че-то не додумался...
И последний тогда вопрос:
этот код использовать только при PREVIEW MODE?
frxDBDataset_Sensors.Free;
frxDBDataset_Committee.Free;
95 2018-07-27 09:54:51
Re: Кнопка копирование (31 replies, posted in Russian)
должно быть просто last_insert_id(), без всяких переменных внутри скобочек. база данных вернет id записи, последней внесенной в БД в принципе, и не важно, в какую таблицу.
96 2018-07-26 14:56:14
Re: разделить текст пр помощи SUBSTRING SQL (11 replies, posted in Russian)
Итак, исходя из поставленной задачи, у меня получилось так:
procedure Form2_OnShow (Sender: TObject; Action: string; Key: Char);
var
arrString: array of string; // динамический массив строк, куда мы разберем по словам, используя пробелы как разделители, большую длинную строку
flag_R, flag_ISOorMKE: boolean; // логические переменные-флаги по наличию буквы Р и ИСО/МКЭ в длинной строке
begin
flag_R := false;
flag_ISOorMKE := false;
...
arrString := SplitString(Form2.Edit3.Text,' '); // разбиваем длинную строку на слова (отдельнная буква, с двух сторон у которой пробел - тоже будет считаться словом)
// начинаем формировать шифр ГОСТа
Form2.Edit9.Text := arrString[0]; // первое слово ГОСТ будет всегда и в принципе; нумерация в динамическом массиве идет с 0, а не с 1
// пошла серия проверок
if (pos('Р', Form2.Edit3.Text) > 0) and (pos('Р', Form2.Edit3.Text) < 7) // проверяем наличие буквы Р в первых 6 символах большой строки, так как Р должно идти сразу за ГОСТ
then flag_R := true;
if ((pos('ИСО', Form2.Edit3.Text) > 0) and (pos('ИСО', Form2.Edit3.Text) < 11)) or ((pos('МКЭ', Form2.Edit3.Text) > 0) and (pos('МКЭ', Form2.Edit3.Text) < 11)) // проверяем наличие ИСО или МКЭ в первых 11 символах большой строки, так как они должны идти сразу за ГОСТ Р
then flag_ISOorMKE := true;
// циферный код ГОСТа имеется всегда в документе и будет либо вторым, либо третьим, либо четвертым словом-блоком
// теперь отрабатываем варианты
if (not flag_R) and (not flag_ISOorMKE) // нет ни Р, ни ИСО/МКЭ
then Form2.Edit9.Text := Form2.Edit9.Text + ' ' + arrString[1]; // дополняем Edit9 циферным кодом
if flag_R and (not flag_ISOorMKE) // есть Р, нет ИСО/МКЭ
then Form2.Edit9.Text := Form2.Edit9.Text + ' ' + arrString[1] + ' ' + arrString[2]; // дополняем Edit9 буквой Р и циферным кодом
if flag_R and flag_ISOorMKE // есть Р, есть ИСО/МКЭ
then Form2.Edit9.Text := Form2.Edit9.Text + ' ' + arrString[1] + ' ' + arrString[2] + ' ' + arrString[3]; // дополняем Edit9 буквой Р, ИСО/МКЭ и циферным кодом
// всё, в Edit9.Text сформированный шифр ГОСТа
end;
в Form2.Edit3.Text у нас исходная строка, в Form2.Edit9.Text - отработанная (нужная)
97 2018-07-26 14:15:19
Re: разделить текст пр помощи SUBSTRING SQL (11 replies, posted in Russian)
Тогда давайте сделаем так... У нас формат шифра ГОСТа такой: ГОСТ <Р> <ИСО|МЭК> <циферный шифр> <полное наименование документа>.
Собственно наша задача в простейшем виде - это выделить первые два-четыре блока "блока" из длинной строки - ГОСТ <Р> <ИСО|МЭК> <циферный шифр>.
Наша задача несколько облегчается тем, что все слова/буквы/шифры разделяются пробелом. Идея моя такова, что надо тупо порезать длинную строку на слова, а взять в работу только первые два-четыре "слова", которые и будут соответствовать нашим "блокам".
Задача несколько осложняется тем, что буква Р может быть в строке, а может и не быть. Например, сравни: "ГОСТ Р 7.0.6-2008 Международный стандартный номер издания музыкального произведения (ISMN). Издательское оформление и использование" и "ГОСТ 7.85-2003 Международный стандартный номер технического отчета". Также, насколько я успел изучить формирование шифра ГОСТов, возможны приставки к «ГОСТ Р» слов «ИСО» или «МЭК», означающие, что данный нормативный документ является переводом стандарта соответствующей международной организации. Но это тоже можно учесть при "резке" строки, так как такие приставки имеют фиксированную позицию относительно других слов-"блоков".
Такая постановка задачи вас устроит?
98 2018-07-26 13:16:42
Re: разделить текст пр помощи SUBSTRING SQL (11 replies, posted in Russian)
Понятно всё с вами)
Правильно ли я понимаю, что при открытии-показе формы в Edit'ах находятся уже данные записи из таблицы БД?
в таком случае, назовите мне Edit'ы (или строковые переменные), в котором есть исходный текст и в какой надо вывести результат substring'а
99 2018-07-26 12:41:13
Re: Формат даты в INSERT для SQLite и MySQL (2 replies, posted in Russian)
В моем примере режется кусок строки с датой формата dd.mm.yy:
var fDate: TDateTime;
arrDate: array of string;
sDate: string;
begin
...
arrDate := SplitString(sDate,'.'); // получаем в переменные YY - год, MM - месяц, DD - день из даты в строке данных
DD := arrDate[0]; MM := arrDate[1]; YY := arrDate[2];
fDate := EncodeDate(StrToInt(YY),StrToInt(MM),StrToInt(DD)); // кодируем дату для записи в БД
sDate := '"'+FormatDateTime('yyyy-MM-DD 00:00:00.000', fDate)+'"'; // форматируем дату для SQL, в кавычки заключать в запросе INSERT уже не надо
...
end;
Вам, соответственно, надо порезать строковую переменную из DataPicker1 с другим разделяющим символом (видимо, -)
100 2018-07-26 12:32:17
Re: разделить текст пр помощи SUBSTRING SQL (11 replies, posted in Russian)
Приведите тогда свой кусок кода, где это происходит, например, всю procedure, в которой все это происходит