Добрый день. Согласен структура не правильная, но задачу пришлось не тривиальными способами решать. Дерево по будущим планам понадобится точно. С этим собственно вопрос - планируете ли этот компонент реализовать? Остальные вопросы снимаются т.к. все получилось.

По вышеуказанному вопросу в общем получилось. Выглядит код так

sss := poruch_gd.Edit1.Text; // копируем в переменную № выбранного поручения
           x:=SQLexecute('SELECT MAX(nom_porGD) FROM porych_GD WHERE (LEFT(nom_porGD, LENGTH("'+sss+'"))="'+sss+'" AND LOCATE(".",RIGHT(nom_porGD,LENGTH(nom_porGD)-LENGTH("'+sss+'")-1))=0)');
           x:=SQLExecute('SELECT RIGHT("'+x+'",LENGTH("'+x+'")-LENGTH("'+sss+'")-1)')+1;
           x:=sss + '.' + x;
           new_poruch_GD.Edit13.Text :=  x;      // записываем в поле № задачи как - 1.1, 1.2.1, и т.п.

Но в некоторых случаях выражение:

x:=SQLExecute('SELECT RIGHT("'+x+'",LENGTH("'+x+'")-LENGTH("'+sss+'")-1)')+1;

может быть равно NULL.
Надо сделать проверку. код по идее должен выглядеть так:

x:=SQLExecute('SELECT IFNULL (RIGHT("'+x+'",LENGTH("'+x+'")-LENGTH("'+sss+'")-1),0)')+1;

Но 0 не присваивает если NULL
Подскажите что не так? в последнем выражении.
выдает ошибку - could not convert variant of type (UnicodeString) into type (Double)

Создавать отдельный проект тоже громоздко, попробую тогда по функционально уточнить.

имеется таблица - porych_GD, в ней текстовое поле - nom_porGD.
nom_porGD допустим содержит следующие строки (номера поручений):
6
6.1
6.1.1
6.1.1.1
6.1.2
6.1.2.1
Нужно при добавлении (нового) поручения присвоить новый номер. Например выбираем в таблице 6.1 то новой записи должен присвоиться (которая на уровень находится ниже 6.1. т.е. будет являться подчиненной к 6.1.) номер 6.1.3, т.е. нужно проверить сколько у 6.1. есть подчиненных на уровень ниже и собственно сгенерировать следующий номер.
пока накидал такой запрос. но не совсем корректно работает ))

sss := poruch_gd.Edit1.Text +'.'; // копируем в переменную № выбранного поручения и добавляем точку (если выбрали №6 то в переменной будет 6.)
         

          new_poruch_GD.Label20.Caption := IntToStr (SQLexecute('SELECT count(*) FROM porych_GD WHERE  LOCATE (".",nom_porGD,"'+sss+'")=0 AND nom_porGD LIKE ("'+sss+'%")')) ;
          new_poruch_GD.Edit13.Text :=  (poruch_gd.Edit1.Text + '.' + new_poruch_GD.Label20.Caption);      // записываем в поле № задачи как - 1.1, 1.2.1, и т.п.

Коллеги помогите реализовать следующее с помощью запроса:
Имеется таблица с поручениями (все функции сейчас работают, единственное что таблица не нормализованна  - ну так надо)
требуется реализовать перенос выбранного поручения на место другого. Словами сложно все описать. во вложении файл пример исходной таблицы и результат перемещения.
Помогите ))

80

(28 replies, posted in Russian)

Еще вопрос.
в таблице есть поле "CheckBox" -  как в dbFilter поставить условие чтоб показать запись которые CheckBox = True?

81

(6 replies, posted in Russian)

Может альтернативным вариантом оповещения пользователя о новом задании это отправка сообщения на почту.

82

(1 replies, posted in Russian)

Добрый день
Можно ли в TableGrid например некоторые (не все) строки выделить жирным или курсивом и т.п.?

83

(28 replies, posted in Russian)

Добрый день.
Ниже команда работает.
enter_kontroler.TableGrid1.dbFilter := '(users.prinadl_1 = 1)';

А как использовать в users.prinadl_1 = 1 не цифру а переменную?

Подскажите или есть пример.
Есть две связные таблицы один ко многим, расположены на одной форме (1 таблица Задачи и вторая подзадачи). Как сделать так, чтобы при выборе (Задачи) из первой таблицы во второй автоматически отображались (подзадачи)

85

(1 replies, posted in Russian)

Добрый день. Вроде простая задача, но не понимаю как....
Есть в БД архив документов - допустим входящие письма. Как можно открыть определенный файл сохраненный в БД по кнопке с любой формы а не через компонент?

В продолжении разговора!
Получилось добиться работоспособности отправки почты путем установки новой машины! Перепробовали кучу вариантов, история такая, что с некоторых машин в сети работает отправка в некоторых не работает выдает ошибку sendmail, т.е. совсем не понятно, настройки у всех машин одинаковые, все вышеуказанное вами проверяли работает! но вот связи не нашёл пока, почту на одних машинах работает на других нет. Может можно еще посоветовать что по SendMail, какие службы надо для нее и т.п.

А где последнюю версию сборника скать?

88

(2 replies, posted in Russian)

Не совсем понял как задавать стили окон! Нужно сделать чтобы окна открывались в родительской форме (окне). Есть ли примеры или поясните подробнее плиз!

89

(9 replies, posted in Russian)

Отлично! Заработало!

90

(9 replies, posted in Russian)

Проект созданный в версии 2.5 при открытии в 2.7. пишет что - проект создан в более новой версии

91

(6 replies, posted in Russian)

Если в ручную добвавить в tables.ini поле то все работает! Пробовал базу пересоздать, при пустой базе добавление полей проходит нормально, и потом просто подгрузить данные то такая ошибка при добавлении опять появляется! Странно но работать можно!

92

(6 replies, posted in Russian)

DriveSoft wrote:

Протестировал, к сожалению не получилось повторить ошибку, возможно будут полезны данные темы

http://dev.mysql.com/doc/refman/5.7/en/ … ction.html
http://stackoverflow.com/questions/6516 … ring-query


в данной теме также описана данная ошибка, которая появляется только на одной таблице, возможно данная таблица БД повреждена
http://www.sql.ru/forum/679307/lost-con … ring-query

Тоже есть предположение что что то с таблицей! Тогда токай вопрос - если я пересоздам БД с другим именем - а из существующей както можно подгрузить данные в новую БД?

93

(6 replies, posted in Russian)

Открываю программу - подключаюсь к MySQL - в таблице vxkoresp нажимаю кнопку добавить новое поле - ввожу название - нажима ОК и далее ошибка как ранее описывал. В других таблицах добавляются поля.

94

(6 replies, posted in Russian)

Добрый день!
Версия программы 2,5. База на MySQL.
При добавлении поля в сушествующую таблицу выдает ошибку. В таблице нове поле не добавляется. При просмотре в Вокбэнче по факту в таблице поля создаются. Скрины в приложении. БД имеет около 100 записей.

95

(1 replies, posted in General)

Добрый день!
Установил версию 2.5. Beta - перестало работать автоподключение к БД. Пришлось пока эту часть скрипта удалить!

Согласен - полезная штука (защита от дурака)! теперь просто придется чуть поменять подход к администрированию БД, из за чего увеличится объем скрипта! ограничений никаких нет на объем скриптов?

На скорую руку не нашел из готовых. Отправляю свой проект, на SQL Lite вообще при удалении из справочника выдает ошибку. Посмотрите плиз, наверное всетаки что то не так делаю.
Последовательность!
запск программы - нажать Вход выбираем админ (админ) - администрирование - справочник структурных подразделений - любая вкладка при попытке удалить выскакивает ошибка.

Для просмотра сам телефонный справочник: справочник - справочник телефонный.

К сожалению нет! некоторые готовые примеры просмотрел то обнаружил что в некоторых такаеже ерунда, при удалении со справочника и сущная запись удаляется. на некоторых все работает, отличий не нашёл!
Скрин с моими связями таблицами во вложении!

Скрин приложил, все стандартно! просто раньше на это не оращал внимание как дело дошло до заполнение то вот обнаружил!

Добрый день!
Не могу понять один момент!
Есть несколько справочников
Например:
Наименование организации
Наименование отдела
и т.п.

Есть таблица "Сотрудник" при добавлении сотрудника из справочников выбираем организацию, отдел и т.д. сохраняем все ОК.

Но при удалении из справочника какой либо записи удаляется и сотрудник, или вываливается ошибка! база на MySQL.

Хэлп!