Страница 1 из 2

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 15:33
talgat55
ABC с11 ms sql . Есть таблица ms sql с полем pri_key для sql но в словаре я это поле не указываю а указываю другое поле AVT как pimary_key и avto_number. Т.е. sql сам выставляет pri_key а словарь свой avto_number для другого поля AVT
вроде работает . Это корректно ?

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 16:18
ingasoftplus
:dizzy:

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 16:46
talgat55
:D

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 17:38
ingasoftplus
talgat55 писал(а): 09 Январь 2024, 16:46:D
хотите ответ? описание sql table, таблицы клариона, + скрины настроек в словаре для таблицы касаемо автонумерации.

пока что мне (трезвому) не понятно что вы написали...

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 18:56
finsoftrz
talgat55 писал(а): 09 Январь 2024, 15:33 ABC с11 ms sql . Есть таблица ms sql с полем pri_key для sql но в словаре я это поле не указываю а указываю другое поле AVT как pimary_key и avto_number. Т.е. sql сам выставляет pri_key а словарь свой avto_number для другого поля AVT
вроде работает . Это корректно ?
А нафига? Теоретически в определенный момент значения могут стать разными.

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 19:01
talgat55
открываю новую форму add - pri_key в ms sql не определен а для поля автонумер. по словарю он известен
а у меня в режиме add в форме штук 5 дочерних таблиц которые должны быть привязаны к родителю

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 19:02
talgat55
чисто для привязки к родит.табл. в режиме add родителя

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 19:06
talgat55
а pri key в sql меня не интересует пусть будет какой захочет

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 20:30
gopstop2007
Попробуйте часть кода сюда сбросить, чтобы было понятно о чем речь.
А то получается, умные думают, что другие тоже думают.

sql и автонумерация в словаре

Добавлено: 09 Январь 2024, 20:38
finsoftrz
В клалист было в свое время подробное обсуждение вопроса автонумерации. Насколько помню, присваивать идентификатор записи рекомендовали на стороне сервера, а не на стороне клиента. После добавления записи ее идентификатор можно получить с сервера, способ может зависеть от используемого sql сервера. Можно порыться в архивах клалист для более подробной информации.

sql и автонумерация в словаре

Добавлено: 10 Январь 2024, 6:47
talgat55
все оттого что при открытии новой записи в форме не определен автоинкремент на стороне sql А мне нужно заполнить в этой форме дочерние таблицы которые я привязываю к нему.

sql и автонумерация в словаре

Добавлено: 10 Январь 2024, 9:25
morkovin
talgat55 писал(а): 10 Январь 2024, 6:47 все оттого что при открытии новой записи в форме не определен автоинкремент на стороне sql А мне нужно заполнить в этой форме дочерние таблицы которые я привязываю к нему.
Для этого я использую шаблон, который подменяет кнопку "Сохранить" на "Применить". Т.е. при добавлении новой записи оператор вводит несколько основных полей и щелкает кнопку Применить. Запись сохраняется и обновляется и открываются закладки для дочерних таблиц.

sql и автонумерация в словаре

Добавлено: 10 Январь 2024, 11:02
talgat55
так можно заполнить что-нить Сохранить Открыть и продолжать
Оператор ленивый и лишних движений не хочет делать...

sql и автонумерация в словаре

Добавлено: 10 Январь 2024, 12:51
kreator
К talgat55 и к другим, которым это интересно.
Это типичная задача и проблема. Ну, во-первых, ничего страшного от того, что в словаре будет стоять autoincrement для какого-то индекса (ключа), нет. Всё будет работать как надо. В момент создания записи она будет добавлена в базу и это значение будет доступно в форме. Главное в этом случае отключить autoincrement на стороне сервера. Во-вторых, можно почитать раздел справки "AUTOINC" (Server Side Auto incrementing). Есть возможность эмулировать поведение SQL-базы как файл-серверной. Я так понимаю, происходит тоже самое, что и в первом варианте, только более правильно с точки зрения работы SQL. Проблема в том, что не все драйверы SQL это поддерживают. В-третьих, можно явно вызывать функцию "бронирования" ID-шника (при добавлении записи). Про MS SQL не скажу. В Firebird это выглядит так:

Код: Выделить всё

FINT{prop:SQL} = 'SELECT GEN_ID(S_DEFECT, 1) FROM RDB$DATABASE'
SQLERR(FINT{prop:SQL})
Access:FINT.Next()
DEF:ID_DEF = FINT.RVAL  
Это надо написать в методе "PrimeFilds". В Firebird используются т.н. генераторы ("S_DEFECT"). По-моему, в MS SQL такого нет. Но подобная функция должна быть.

sql и автонумерация в словаре

Добавлено: 10 Январь 2024, 14:59
finsoftrz
В MS SQL это называется SCOPE_IDENTITY(), насколько помню. Сам я со скриптовыми движками БД не работаю. Было еще предложение использовать унифицированный для всех sql серверов подход заполняя перед добавлением записи некоторые поля, определяющие ее уникальность и после добавления делать select max(id) для набора таких полей. Например, пользователь, создающий запись. Я бы все же предложил полистать архивы clalist, там очень подробно обсуждалось.