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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
talgat55
Ветеран
Сообщения: 316
Зарегистрирован: 11 Сентябрь 2008, 12:53
Благодарил (а): 3 раза

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

Сообщение talgat55 »

ABC с11 ms sql . Есть таблица ms sql с полем pri_key для sql но в словаре я это поле не указываю а указываю другое поле AVT как pimary_key и avto_number. Т.е. sql сам выставляет pri_key а словарь свой avto_number для другого поля AVT
вроде работает . Это корректно ?
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 426
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 90 раз
Поблагодарили: 5 раз

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

Сообщение ingasoftplus »

:dizzy:
talgat55
Ветеран
Сообщения: 316
Зарегистрирован: 11 Сентябрь 2008, 12:53
Благодарил (а): 3 раза

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

Сообщение talgat55 »

:D
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 426
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 90 раз
Поблагодарили: 5 раз

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

Сообщение ingasoftplus »

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

пока что мне (трезвому) не понятно что вы написали...
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

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

Сообщение 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
вроде работает . Это корректно ?
А нафига? Теоретически в определенный момент значения могут стать разными.
C6/C11, ШВС, tps/btrieve.
talgat55
Ветеран
Сообщения: 316
Зарегистрирован: 11 Сентябрь 2008, 12:53
Благодарил (а): 3 раза

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

Сообщение talgat55 »

открываю новую форму add - pri_key в ms sql не определен а для поля автонумер. по словарю он известен
а у меня в режиме add в форме штук 5 дочерних таблиц которые должны быть привязаны к родителю
talgat55
Ветеран
Сообщения: 316
Зарегистрирован: 11 Сентябрь 2008, 12:53
Благодарил (а): 3 раза

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

Сообщение talgat55 »

чисто для привязки к родит.табл. в режиме add родителя
talgat55
Ветеран
Сообщения: 316
Зарегистрирован: 11 Сентябрь 2008, 12:53
Благодарил (а): 3 раза

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

Сообщение talgat55 »

а pri key в sql меня не интересует пусть будет какой захочет
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

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

Сообщение gopstop2007 »

Попробуйте часть кода сюда сбросить, чтобы было понятно о чем речь.
А то получается, умные думают, что другие тоже думают.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

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

Сообщение finsoftrz »

В клалист было в свое время подробное обсуждение вопроса автонумерации. Насколько помню, присваивать идентификатор записи рекомендовали на стороне сервера, а не на стороне клиента. После добавления записи ее идентификатор можно получить с сервера, способ может зависеть от используемого sql сервера. Можно порыться в архивах клалист для более подробной информации.
C6/C11, ШВС, tps/btrieve.
talgat55
Ветеран
Сообщения: 316
Зарегистрирован: 11 Сентябрь 2008, 12:53
Благодарил (а): 3 раза

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

Сообщение talgat55 »

все оттого что при открытии новой записи в форме не определен автоинкремент на стороне sql А мне нужно заполнить в этой форме дочерние таблицы которые я привязываю к нему.
Аватара пользователя
morkovin
Ветеран
Сообщения: 909
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

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

Сообщение morkovin »

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

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

Сообщение talgat55 »

так можно заполнить что-нить Сохранить Открыть и продолжать
Оператор ленивый и лишних движений не хочет делать...
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

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

Сообщение 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 такого нет. Но подобная функция должна быть.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

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

Сообщение finsoftrz »

В MS SQL это называется SCOPE_IDENTITY(), насколько помню. Сам я со скриптовыми движками БД не работаю. Было еще предложение использовать унифицированный для всех sql серверов подход заполняя перед добавлением записи некоторые поля, определяющие ее уникальность и после добавления делать select max(id) для набора таких полей. Например, пользователь, создающий запись. Я бы все же предложил полистать архивы clalist, там очень подробно обсуждалось.
C6/C11, ШВС, tps/btrieve.
Ответить