В какой версии работаете?
У меня 3.2

У меня нет никакой ошибки.
Опишите подробнее когда получается ошибка.
Вот видео

3

(5 replies, posted in Russian)

Сделал так

procedure main_dobjectcategory_OnChange (Sender: string);
begin
    if main.dregion.dbItemID>0
        then begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_Region='''+IntToStr(main.dregion.dbItemId)+''') and (id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='id_Region='''+IntToStr(main.dregion.dbItemId)+'''';
                    UpdateDatabase('Object');
                     end
             end
        else begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='object LIKE "%%"';
                    UpdateDatabase('Object');
                     end
             end

end;

procedure main_dregion_OnChange (Sender: string);
begin
    if main.dregion.dbItemID>0
        then begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_Region='''+IntToStr(main.dregion.dbItemId)+''') and (id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='id_Region='''+IntToStr(main.dregion.dbItemId)+'''';
                    UpdateDatabase('Object');
                     end
             end
        else begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='object LIKE "%%"';
                    UpdateDatabase('Object');
                     end
             end

end;

Похоже работает.
Может еще кому то пригодится.

4

(5 replies, posted in Russian)

.        таблица  objectcategory
запись1   cat1
запись2   cat2
----------     cat3
----------     cat4
----------     cat5



          таблица   region
запись1   reg1
запись2   reg2
----------     reg3
----------     reg4
----------     reg5




          таблица   object
запись1   obj1  +  cat1  + reg5
запись2   obj2  +  cat4  + reg1
----------     obj3  +  cat2  + reg2
----------     obj4  +  cat1  + reg2
----------     obj5  +  cat2  + reg5



ComboBoxObjectCategory (ForeignKey --- objectcategory)
ComboBoxRegion (ForeignKey  --- region)

ComboBoxObject (ForeignKey  --- object) (Parent ComboBox --- ComboBoxObjectCategory)

При такой конструкции могу выбрать ComboBoxObjectCategory=cat1
тогда в ComboBoxObject  останутся  obj1  и  obj4
но obj1 из reg5
      obj4 из reg2
надо чтобы при выборе ComboBoxRegion=reg2  остался только obj4 (то есть два Parent ComboBox)

5

(5 replies, posted in Russian)

1 таблица object
2 таблица objectcategory
3 таблица region

object связь с objectcategory
object связь с region

То есть в коком регионе находится объект и к кокой категории он относится.

Делаю так. ComboBoxObject---ParentComboBox (ComboBoxObjectCategory)  или ComboBoxObject---ParentComboBox (ComboBoxRegion)

Но как делать что бы в  ComboBoxObject  были объекты из выбранного региона(ComboBoxRegion) и выбранной категории (ComboBoxObjectCategory)

6

(5 replies, posted in Russian)

Здравствуйте.
Возникла проблема с комбобоксами.
Есть 3 комбобокса. Каждый связан с таблицей. У первой таблицы связь со вторым и третьим.
С помощью ParentCombobox могу связать только с одним но надо с двумя.
Пробовал через фильтр но выводит ошибку.

Select `object` From `Object` Where `Object`.`id_Rating`={ComboBoxRegion} 

пробовал и так

Select `object` From `Object` Where `Object`.`id_Rating`='+main.ComboBoxRegion.sqlValue

7

(17 replies, posted in Russian)

Если в скрипте объявить переменную, можно ли как то использовать его в sql запросе?

8

(17 replies, posted in Russian)

beniamin91 wrote:

И еще как сделать datetimepickcer.Date := ( datetimepickcer.Date - 1 месяц )?
Можно конечно datetimepickcer.Date := datetimepickcer.Date - 30  но ведь не каждый месяц имеет 30 дней.

С этим разобрался

Form1.DateTimePicker1.Date:=IncMonth(Form1.dtDateOfBirth.Date,-1);

Но фильтры не хочу делать на костылях.

9

(17 replies, posted in Russian)

Спасибо за пример. Только один вопрос. В примере поиск по дате осуществляется строго по фильтру  " = ". Как сделать что бы можно было работать с фильтрами " < , > " ?
И еще как сделать datetimepickcer.Date := ( datetimepickcer.Date - 1 месяц )?
Можно конечно datetimepickcer.Date := datetimepickcer.Date - 30  но ведь не каждый месяц имеет 30 дней.

10

(17 replies, posted in Russian)

О если пойти другим путем?
В этом же проекте кнопки SQL Search делают поиск точно так как задумано но к ним не смог подключить checkbox и datetimepicker. Вы можете дать пример как реализовать поиск с MySQL и checkbox , datetimepicker.
Я несколькими постами выше описал проблему

beniamin91 wrote:

Немножко доработал проект. Сейчас поиск работает, да еще и  с параметрами Incremental Search. Но на второй вкладке я не смог нормально подключить к поиску checkbox и datetimepicker (что бы и инкремент работал и фильтры и т.д)
Прошу вас помочь.

11

(17 replies, posted in Russian)

Form1.Button10
Form1.Button12

12

(17 replies, posted in Russian)

Все проблемы второго поста актуальны, я посмел предположить что это ошибки самой программы MVD. Если есть способ их исправить то других вопросов не остается, по скольку необходимость SQL запроса для поиска отпадет.
Если же исправить не удастся, значит поиск должен будет осуществляться по SQL запросу , и тогда остается проблема с CheckBox и DateTimePicker.
Нужно сделать так.
Если галочка datetimepicker не установлена, то выводятся записи с любой датой, но в то же время учитываются значения остальных компонентов участвующие в поиске (edit, combobox,checkbox)
Если datetimepicker активна и выбрана дата, выводятся записи с выбранной датой и с фильтром (то есть <,>,=  фильтры должны работать). Значения остальных компонентов опять учитываются.
С чекбоксом аналогична то же самое. Будет состояние grayed, увидим все записи несмотря на Visit.vState ровно 0 или 1. Состояние 1 то все записи у которых Visit.vState ровно 1. Состояние 0 то все записи у которых Visit.vState ровно 0. И опять таки остальные компоненты тоже будут учитываться, то есть всегда будет связь AND.
В прикрепленном проекте из последнего поста я осуществил поиск с помощью SQL запроса, но вышеупомянутые проблемы с CheckBox  и DateTimePicker не смог решить.

13

(17 replies, posted in Russian)

Сделал импорт базы из phpmyadmin, может понадобится.

14

(17 replies, posted in Russian)

Немножко доработал проект. Сейчас поиск работает, да еще и  с параметрами Incremental Search. Но на второй вкладке я не смог нормально подключить к поиску checkbox и datetimepicker (что бы и инкремент работал и фильтры и т.д)
Прошу вас помочь.

15

(17 replies, posted in Russian)

Возникло еще одна проблема
По тому sql коду что ведется поиск, в таблице выводятся не только значения параметров но и их id.
Смотрю на код и понимаю что так и должно бить. Там же есть эти выборки. Но не понимаю почему стандартная кнопка поиска сгенерировала такой код.

16

(17 replies, posted in Russian)

Вот код sql кнопки

SELECT DISTINCT
`Doctor`.id,
`Doctor`.`dName` as "Doctor.dName",
`Rating`.`rating` as "Rating.rating",
`Specialty`.`specialty` as "Specialty.specialty",
`Agent`.`login` as "Agent.login",
`ObjectCategory`.`objectcategory` as "ObjectCategory.objectcategory",
`City`.`city` as "City.city",
`Region`.`region` as "Region.region",
`Object`.`object` as "Object.object",
`Doctor`.`id_Rating` as "Doctor.id_Rating",
`Doctor`.`id_Specialty` as "Doctor.id_Specialty",
`Doctor`.`id_Agent` as "Doctor.id_Agent",
`Region`.`id_City` as "Region.id_City",
`Object`.`id_ObjectCategory` as "Object.id_ObjectCategory",
`Doctor`.`id_Object` as "Doctor.id_Object",
`Object`.`id_Region` as "Object.id_Region"

FROM `Doctor`
LEFT OUTER JOIN `Rating` ON `Doctor`.`id_Rating`=`Rating`.id
LEFT OUTER JOIN `Specialty` ON `Doctor`.`id_Specialty`=`Specialty`.id
LEFT OUTER JOIN `Agent` ON `Doctor`.`id_Agent`=`Agent`.id
LEFT OUTER JOIN `Object` ON `Doctor`.`id_Object`=`Object`.id
LEFT OUTER JOIN `Objectcategory` ON `Object`.`id_ObjectCategory`=`ObjectCategory`.id
LEFT OUTER JOIN `Region` ON `Object`.`id_Region`=`Region`.id
LEFT OUTER JOIN `City` ON `Region`.`id_City`=`City`.id

WHERE
(Doctor.dName LIKE '%{sdName}%') OR
(Doctor.id_Rating LIKE {sdRating})  OR
(Doctor.id_Specialty LIKE {sdSpecialty}) OR
(Doctor.id_Object LIKE {sdObject}) OR
(Object.id_ObjectCategory LIKE {soObjectCategory}) OR
(Object.id_Region LIKE {soRegion}) OR
(Region.id_City LIKE {srCity}) ;

17

(17 replies, posted in Russian)

Не знаю насколько правильно но нашел несколько ошибок.
1) Вот код стандартной кнопки поиск

SELECT DISTINCT 

`Doctor`.`dName` as "Doctor.dName",
`Rating`.`rating` as "Rating.rating",
`Specialty`.`specialty` as "Specialty.specialty",
`Agent`.`login` as "Agent.login",
`Object`.`object` as "Object.object",
`ObjectCategory`.`objectcategory` as "ObjectCategory.objectcategory",
`Region`.`region` as "Region.region",
`City`.`city` as "City.city",
`Doctor`.id,
`Doctor`.`id_Specialty` as "Doctor.id_Specialty",
`Doctor`.`id_Agent` as "Doctor.id_Agent",
`Region`.`id_City` as "Region.id_City",
`Doctor`.`id_Object` as "Doctor.id_Object",
`Object`.`id_ObjectCategory` as "Object.id_ObjectCategory",
`Doctor`.`id_Rating` as "Doctor.id_Rating",
`Region`.`id_City` as "Region.id_City" 

FROM `Doctor` 
LEFT OUTER JOIN `Specialty` ON `Doctor`.`id_Specialty`=`Specialty`.id 
LEFT OUTER JOIN `Agent` ON `Doctor`.`id_Agent`=` Agent`.id 
LEFT OUTER JOIN `City` ON `Region`.`id_City`=`City`.id 
LEFT OUTER JOIN `Object` ON `Doctor`.`id_Object`=`Object`.id 
LEFT OUTER JOIN `Objectcategory` ON `Object`.`id_ObjectCategory`=`Objectcategory`.id 
LEFT OUTER JOIN `Rating` ON `Doctor`.`id_Rating`=`Rating`.id 
LEFT OUTER JOIN `Region` ON `City`.id=`Region`.`id_City`

Как я понял JOIN-и тут  неправильно упорядочены
Я сделал так

FROM Doctor
LEFT OUTER JOIN `Rating` ON `Doctor`.`id_Rating`=`Rating`.id
LEFT OUTER JOIN `Specialty` ON `Doctor`.`id_Specialty`=`Specialty`.id
LEFT OUTER JOIN `Agent` ON `Doctor`.`id_Agent`=`Agent`.id
LEFT OUTER JOIN `Object` ON `Doctor`.`id_Object`=`Object`.id
LEFT OUTER JOIN `Objectcategory` ON `Object`.`id_ObjectCategory`=`ObjectCategory`.id
LEFT OUTER JOIN `Region` ON `Object`.`id_Region`=`Region`.id
LEFT OUTER JOIN `City` ON `Region`.`id_City`=`City`.id

2) Посмотрите на последнюю строку SELECT-a

`Region`.`id_City` as "Region.id_City"

Оно повторяется
3)Нет выбора Region-a в SELEC-е 

`Object`.`id_Region` as "Object.id_Region"

как я понял вместо него и дублировалась 

`Region`.`id_City` as "Region.id_City"

В прикрепленном архиве два скриншота, из первого видно что выбор Region-a должно было произойти.
4)Во втором скриншоте баг какой то,  встречаю не первый раз но не обращал внимание. Таблица повторяется.
По скольку проект начал собирать заново, уверен что не я перекосячил.

Я вас прошу по возможности посмотреть проект, поскольку сам в программировании  не разбираюсь подозреваю что не все правильно понял и не все правильно нашел.

В прикрепленном файле из первого поста пока не добавлял кнопку с sql запросом, поэтому тут напишу полностью код  по которому будет работать поиск (во всяком случае ошибки не выдаст ).  я прицепил его к отдельной кнопке и выводил результат в отдельном TG

18

(17 replies, posted in Russian)

Добрый день.
У проекта возникает ошибка если пользуюсь MySQL. На SQLite похоже работает , во всяком случае  ошибку не показывает.
Сперва подумал может я как то неправильно собрал проект и возник конфликт ,  но после того как пересоздал увидел что все так и остался.
Прикрепляю проект, если не затруднит посмотрите пожалуйста.
Ошибка выходит при нажатии кнопки поиска.
Спасибо.

19

(13 replies, posted in Russian)

Я использую

Form1_TableGrid1_OnCellDoubleClick 

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

idEmp := IntToStr(Form1.TableGrid1.dbItemID);

так я получаю id записи с которым надо работать.
Я таким способом хотел приспособить ваш пример к моему проекту.
Сейчас у меня проблема с поиском.
Не знаю как сделать чтобы при выборе food-ов из комбобокса в таблице показывались employees у которых выбраны такие  food.
Проблема в том что кроме комбобокса food в поиске будут участвовать текстбоксы lastname и firstname.

20

(13 replies, posted in Russian)

Может час поздний о может я не вникаю но опять возникли проблемы.
Сейчас проблема с поиском.
Как сделать чтобы в поиске участвовал комбобокс?

Я чуть-чуть изменил ваш пример.

21

(13 replies, posted in Russian)

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

22

(12 replies, posted in Russian)

Вот небольшой видеоролик на ютуб

23

(12 replies, posted in Russian)

Теперь другая ошибка
Простите я что то туплю
вот проект без ехе файла
подключение к базе осуществляется из скрипта

24

(12 replies, posted in Russian)

О теперь такая ошибка

25

(12 replies, posted in Russian)

DriveSoft wrote:

beniamin91
Поля должны разделяться запятыми, вместо точки с запятой

Теперь ругается на последнюю строку

WHERE  doctor.id={tgDoctor.dbItemId}