Як додати елемент в dblookupcombobox

Як додати елемент в DBLookupComboBox?

Заповнюю DBLookupComboBox записами з таблиці. Як додати першим в списку DBLookupComboBox елемент типу "Ні значення" з KeyValue = -1, а далі в списку все записи таблиці
Це треба для того, щоб користувач міг і не вибрати нічого зі списку, а я міг би зберегти в іншу таблицю значення -1, як результат того, що нічого не було вибрано

Додай в датасета, на який дивиться комбік, такий запис.

то що, при кожному заповненні DBLookupComboBox додавати запис?

Ти його руками заповнюєш чи що?

У DBLookupComboBox немає записів.


> Ти його руками заповнюєш чи що?

не руками естств. Я так розумію, повинна бути "чергова" запис в таблиці зі значенням "Ні значення" і id = -1?


> В DBLookupComboBox немає записів

Я мав на увазі записи таблиці


> Повинна бути "чергова" запис в таблиці

Не в таблиці а в наборі даних. Це не одне і те ж.

Select -1 as id, "Ні значення" as Value
union all
Select id, Value from Table1

І не треба нічого вигадувати, "все вже вкрадено до нас" (с)

Можна і так, якщо не заважає. Можна в запиті додати типу
select * from table
union all
select -1, "Ні значення" from чогось-таке

можна просто вставити запис в датасета, що не фіксуючи змін в БД.

Взагалі-то класика жанру на кшталт рекомендує туди нічого не записувати, точніше записувати значення NULL.


> Взагалі-то класика жанру на кшталт рекомендує туди нічого не
> Записувати, точніше записувати значення NULL.
>

Стандартний DBLookupCombo на null ніби як не позиціонується.

Так супер! все підходить. Велике спасибі!

Я маю на увазі, що записувати в головну таблицю нічого не треба, при НЕ вибраною величиною довідника.


> Я маю на увазі, що записувати в головну таблицю нічого не
> Треба, при НЕ вибраною величиною довідника.

А. Я тебе в [9] неточно зрозумів.

дозвольте зробити маленьку поправочку.
мені кажеться треба використовувати не union all, а просто union

Incorporates all rows into the results, including duplicates. If not specified, duplicate rows are removed.

У твоєму випадку - без різниці. Просто All - це вже звичка, на автоматі вилітає.

Розумію. резонне зауваження з вашого боку, панове експерти - "вчи матчать" :-)


> Чесно кажучи, сам не знаю, але коли union all, то чомусь
> То значень "Немає значення" рівно стільки, скільки записів
> В таблиці (наборі данниз)

І СУБД назви. Тому як у мене в TSQL - все прекрасно.

Select -1 as id, "Ні значення" as name FROM spr_nakladnaya
union all
SELECT id, name FROM spr_nakladnaya

Select -1 as id, "Ні значення" as name
union all
SELECT id, name FROM spr_nakladnaya

З першою частиною не згоден - я далеко не експерт. Другу частину підтримую повністю. 8-)

Тоді коштує не поправляти більш знаючої людини, а перепитати для уточнення. (Втім це вже лірика)

> Але коли union all, то чомусь значень "Немає значення"
> Рівно стільки, скільки записів в таблиці (наборі данниз)

1. коли де "union all"?
2. а скільки ти очікував і колько там (і взагалі де?) Є?
3. таблиця<>набору даних

Union, якщо почитати документацію, повертає суму записів двох таблиць, виключаючи повторювані записи. Union ALL нічого не виключає, крім того він не робить і неявну сортування / угруповання, необхідну для виключення дублікатів. Тому в твоєму випадку необхідний якраз таки union all.

так пробував. Ви так вказали перший раз. Але видає помилку
"В якості вхідних даних запит повинен мати хоча б одну таблицю або запит"

млинець. ось в Access не знаю. На TSQL і PgSQL просто "з нізвідки" Select можна зробити.
У FB - from RDB $. (Чогось там, вже не пам'ятаю)

все одно дякую! головне ж - ідея сама

Якщо ти все таки вирішив писати в головну таблицю значення -1, то тобі доведеться додати додаткову запис в довідник. Інакше не вийде записати, якщо звичайно зв'язок між таблицями у вигляді зовнішнього ключа існує (а вона повинна бути.). Тоді запит з union відпаде сам собою.

ага. напевно, Ви імелті увазі, що все одно в довіднику має бути співвідношення -1 -> "Немає значення"
Наприклад, хоча б # XA0; для відображення в тому ж гріді. Так я зрозумів?

Грід тут лісом йде. У головній таблиці повинен бути зовнішній ключ на довідник. Наявність зв'язку з цим передбачає, що в поле таблиці містяться посилання тільки на те, що є в довіднику. Це називається посилальної цілісністю.

Якщо значення не вибрано - це NULL. а -1 це конкретне значення, яке ПОВИННО існувати в довіднику.

Чого тобі треба, старче. (С) Пушкін
8-)

Чого "мені цього не треба та й не треба буде в майбутньому"? Кількість посилань цілісність? Ню-ню.

Ніяк не відобразиться / НЕ спозіціоніруется. У гріді буде пусте поле.


> Ніяк не відобразиться / НЕ спозіціоніруется. У гріді буде
> Порожнє поле.

Я свій DBLookupCombo написав, у нього позиціонується. # XA0;: о)

Схожі статті