Дмитрий а есть какие либо ньюансы при использовании связанных списков и использовании триггеров при ведении логов?

Пример скрипта никак не могу заставить заработать:

//SQLExecute('DROP TRIGGER IF EXISTS my_log_insert'); // how to remove trigger

    //триггер при вставке новой записи
    SQLExecute(
    'CREATE TRIGGER IF NOT EXISTS my_log_insert AFTER INSERT ON Uchet '+
    'BEGIN '+
    'INSERT INTO Logs(ParentId, datetimeEvent, operation, log_id_naimenovanie, log_id_proizvoditel, log_id_model, Log_ser_number, log_inv_number, ' +
    'log_date_realese, log_date_of_input, log_id_sluzba, log_id_kabinet, log_id_otvLico, log_dop_opisanie, log_id_dolznost, log_aurum, log_argentum, log_platinum, log_palladium) '+
    'VALUES (NEW.id, datetime(''now'', ''localtime''), ''Новая запись'', '+

  [b] '(SELECT Naimenovanie.nazvanie FROM Naimenovanie WHERE Naimenovanie.id=NEW.id_Naimenovanie),'+[/b]
   // '(SELECT Naimenovanie.nazvanie FROM Uchet u LEFT OUTER JOIN Model ON Model.id=Uchet.id_Model LEFT OUTER JOIN Proizvoditel ON Proizvoditel.id=Model.id_Proizvoditel LEFT OUTER JOIN Naimenovanie ON Naimenovanie.id=Proizvoditel.id_Naimenovanie WHERE Uchet.id=u.id AND Naimenovanie.id=NEW.id_Naimenovanie), '+
   [b] '(SELECT Proizvoditel.proizvoditel FROM Proizvoditel WHERE Proizvoditel.id=NEW.id_Proizvoditel),'+[/b]
  //  '(SELECT Proizvoditel.proizvoditel FROM Uchet u LEFT OUTER JOIN Model ON Model.id=Uchet.id_Model LEFT OUTER JOIN Proizvoditel ON Proizvoditel.id=Model.id_Proizvoditel WHERE Uchet.id=u.id),'+

   [b]//'(SELECT Model.model FROM Model  WHERE Model.id=Uchet.id_Model),'+[/b]
    '(SELECT Model.model FROM Model WHERE Model.id=NEW.id_Model),'+
    'NEW.ser_number, NEW.inv_number, NEW.date_release, NEW.date_of_input, '+
    '(SELECT Sluzba.sluzba FROM Sluzba WHERE Sluzba.id=NEW.id_Sluzba),'+
    '(SELECT Kabinet.kabinet FROM Kabinet WHERE Kabinet.id=NEW.id_Kabinet),'+
    '(SELECT OtvLico.lico FROM OtvLico WHERE OtvLico.id=NEW.id_OtvLico),'+
    'NEW.dop_opisanie, (SELECT Dolznost.dolznost FROM Dolznost WHERE Dolznost.id=NEW.id_Dolznost), NEW.aurum, NEW.argentum, NEW.platinum, NEW.palladium); '+
    'END;'
    );

Связанный кусок помечен жирным текстом. До того как переделал под связанный список все работало, теперь выдает ошибку типа отсутствует поле Uchet.Model_id. Пытался вставлять вычисляемые поля (закомментированы, изменений нет).

27

(14 replies, posted in Russian)

Дмитрий, я уже проект переделал. перенес чек на другую форму, поменял структуру базы данных так что выкладывать в данный момент нечего :-(((. Переделывать обратно, очень много работы с переписыванием скриптов.
Мне бы конечно бы конечно хотелось бы вернуться к задуманной реализации. Суть вопроса такова:
1. В таблице "Uchet" сохраняются все основные параметры оборудования.
2. В таблицу "Dvizenie"  впоследствии можно вносить все записи о движении оборудования. Движений может быть любой количество.  В какой то момент времени оборудование списывается, для чего активируем чекбокс, (отметка о том что оборудование списано) и он же открывает для записи несколько доп. полей. 
И вот тут вопрос:
Хотелось бы на главной форме для поиска использовать данный чекбокс, но если никакие записи о движении оборудования не вносить то в таблицу в строке чекбокса не сохраняется совсем ничего ни 1 не 0.  Поэтому все записи при поиске вводятся только при состоянии чекбокса  AlowGrayed.  При попытке поииска записей при например не активном флажке, могут выводиться и  записи которые числятся списанными, потому, что поиск работает по всем введенным движениям оборудования а надо что бы при активации чек бокса все предыдущие движения игнорировались. В постах 3 и 4 есть скрины как это было ранее и задумывалось. Или может быть это не совсем правильная реализация?

28

(14 replies, posted in Russian)

Да.

29

(14 replies, posted in Russian)

И еще:

30

(14 replies, posted in Russian)

Дерек, спасибо за пример, это почти то что надо, но хотелось бы без использования дополнительных таблиц. Рисунок прилагаю,как размещены компоненты на форме:

Дмитрий, имеем некую таблицу в которую вносим базовые сведения, и  подтаблицу в которую вносим дополнительные сведения на базе основной записи. Записей в подтаблице может быть любое число но для поиска нам интересна только запись с последним решением. Вопрос - как отбросить все ненужные в конкретно данный момент  для поиска записи? 
Основная запись и ниже ее подзаписи (например принятые решения)

  • подзапись 1 остается  в базе для того чтобы было видно что происходило ранее (для поиска уже не нужна)

  • подзапись 2 остается  в базе для того чтобы было видно что происходило ранее (для поиска уже не нужна)

  • подзапись 3 последнее движение - в результат поиска только основная запись с таким видом решения

а предыдущие игнорируются.


Особенное интересует возможность использования чекбокса в случае ввода последнего решения. При стандартной настройке поиска и при нескольких записях  в подтаблице, (например в двух записях  флажки не активны а в одной активен ) в результат выводит и запись где в последнем решении чекбокс активирован, хотя в данное условие для поиска не задавалось.

32

(5 replies, posted in Russian)

Предположу что да, на английской ветке форума имеется пример с скриптом экспорта- импорта с небольшими ошибками, заливает все отлично, только файл до этого надо использовать csv. Не знаю умеет ли access в него сохранять. Либо перенести все в бд при помощи стороннеготсофта например sqllitestudio. Но потмне лучше первый вариант.

33

(3 replies, posted in Russian)

Спасибо за ответ, но за несколько дней раздумий остановился на варианте с состоянием  "Показать все записи" показать только "списанные" и показать "то что на учете".  И уже наверное не буду возвращаться к первому варианту.

DriveSoft wrote:

И возможна ли в вашем случае, что списанная мат. ценность может стать НЕ списанной? Например в движении мат ценности сделали списание, а затем добавили запись для данной мат. ценности, что она уже не списанная?

Тут по логике задумывалось что записей движения может быть сколь угодно много но последняявсегда запись о списании, поэтому для простоты и вставил чекбокс, по которому одновременно активируются дополнительные поля.
Изучал бд с помощью sqlitqstudio, не понимая почему при двух состояниях элемента ЧекБокс выводит только часть записей, (например 3 и 5 соответственно, а всего их 10) оказалось что если сохранить общую информацию без добавления движения вещи (например по поступлении  "Поступило на склад") то эти записи в выборку и не попадают, хотя все ключи заполнены. А при выборке в таблице в поле "Списано"  у них пустое значение хотя фактически в БД все поля имеют значение ложь либо истина т.е. 1 или 0; тут как говорится уже больше спортивные интерес, дабы понять почему при таком варианте внесения подзаписей чекбокс начинает так работать.

DriveSoft wrote:

wertyby
Установите свойства формы
AutoScroll = True
BorderStyle = Sizeable

Скролл на форме появится автоматически, если компоненты будут находится за пределами формы.

Дмитрий, а прокрутку формы мышью реализовать не получится никак?

35

(3 replies, posted in Russian)

Еще скрин:

36

(3 replies, posted in Russian)

Дмитрий, никак не могу понять как реализовать поиск если в нем участвует компонент CheckBox при структуре таблицы как на прилагаемых скринах? На данной форме вносятся  движения матценностей, , и в случае их списания чекбоксом активируются нижние три поля. при одной записи все отлично, а если их несколько то поиск становится неверным например при неактивном чеке вывод =3 записи, при активном =4 записи, а при нейтральном положении 10 записей? И можно ли все это сделать с помощью стандартного поиска учитывая что хотелось бы иметь всего лишь два состоянии компонента ложь и истина?

37

(18 replies, posted in General)

I'm apologizing for bad English.

Dear ehwagner. I used your example for my project, but there was such a question. When importing, if the field in the (.csv) file is empty (, '',) then it is not marked in the database in any way, but it needs to be set to "NULL". Is it possible to complete this script? Otherwise, this leads to an error when duplicating records in the TableGrid.

38

(25 replies, posted in Russian)

При прокрутке вниз меню "Свойства компонента"  у компонента "Edit" . раскрытии списка "Additional" , а затем списка "Constraints" программа прокручивает его сначала бесконечно, а потом выдает ошибку.

Табшит насколько я понял открывается тот, который был активен при компиляции программы. т.е. тот  табшит на котором вы окончили редактирование и будет открываться. Если я правильно понял суть вопроса.

И multiline что то не сработал. Может еще, что либо активировать нужно?

Еще вопрос вылез, как избежать данного эффекта как на скрине, либо может кто подскажет что необходимо сделать для того что бы форма нормально выглядела при смене разрешений монитора, так как при его уменьшении она перестает влазить в границы экрана.

Решено. Спасибо, при таких параметрах работает.

В моем случае таки необходим скролл формы, т.к. очень много компонентов необходимо разместить именно вертикально, для исключения путаницы при вводе данных. Последовательный переход табом по полям. И проблема возникла, что на мониторах с более низким разрешением, становится невидимой нижняя часть формы. Решение предложенное tronador-om -:), пробовал, активируется почему то только горизонтальный.

Дмитрий никак не могу понять как активировать вертикальный скролл на форме по вертикали. По горизонтали включается но он не нужен. а вертикальный никак? И еще возможно ли в шапке грида активировать перенос строки, т.е. шапка таблицы могла иметь более одной строки, а то название колонки длинное, а помещаемая информация в ячейку несколько символов?

45

(33 replies, posted in Russian)

Используя компонент PageControl, по умолчанию Style=FlatButtons  и если попытаться сменить TabPosition на Bottom программа падает. Дернуло меня поменять без сохранения проекта и 2-х часовая работа коту под хвост. :-((((((((((

k245 wrote:

Сохранение имён визуальных компонент при копировании их через буфер обмена. Сейчас при вставке имена компонентов теряются (устанавливаются по умолчанию), а так как скрипты привязываются к конкретным названиям, то при переносе формы в другой проект много времени теряется на переименование компонентов.

А ещё при копировании визуальных компонент они располагались с точно такой же настройкой на новой форме как и в оригинальной. ))) А то сегодня делал словари с помощью pagecontrol, в связи с чем имеется желание видеть компоненты ровно в тех же мзаестах при переключении вкладок, и так отличаются только названия а остальные элементы аналогичны просто их копировал, но они при вставке немного смещаются и потом приходится их настраивать ориентируюсь на координатную сетку оригинала.

В таблице name нет колонки nikname, или проверь пути сохранения на элементах формы, а также что сохраняется при клике по кнопке Сохранить. Если ещё не разобрался с программой, то проверь все элементы формы , а точнее куда должна сохраняться информация, а на кнопку сохранить добавляй поочередно по 1 элементу пока не словишь ошибку

48

(4 replies, posted in Russian)

Спасибо, работает.

49

(4 replies, posted in Russian)

Ок. Спасибо. Подождем.

50

(4 replies, posted in Russian)

Дмитрий, используя данный пример http://myvisualdatabase.com/forum/viewtopic.php?id=1374 реализован поиск в комбобоксе. Поиск работает, значение сохраняется но есть одно но - у меня этот комбобокс реализован как связанный список, и в зависимом от данного комбобоксе комбобоксе выбрать ничего нельзя если после поиска нажать ентер и табом перейти далее.  Но если повторно выбрать найденное значение мышью связанный список работает. Можете ли Вы добавить в разработанные проекты пример как решить данную проблему.