powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Первичный ключ в связке MS SQL - Access
11 сообщений из 11, страница 1 из 1
Первичный ключ в связке MS SQL - Access
    #32070615
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база в access-е где используются связанные таблицы из базы в MS SQL через ODBC. Все работает, но с увелечением размера баз стало подтормажывать и решил перейти на adp проект. И сразу сталкнулся с проблемой:
В связи с тем что базы на SQL реплицируемые (сведением, тк некоторые работают дома) Ключевые поля были сделанны случайными - стоит формула в значении по умолчанию. При использовании ODBC небыло проблем, а в adp при внесении записи (ключевое поле остается пустым в расчете на формулу) access ругается что запись не будет отражена тк не удавлитворяет условим базы и не отображает запись, но при этом запись в SQL производиться. Я понимаю что все правы(SQL и ACCESS) а посему прошу совета как обойти эту ситуацию.
Ps:Пока вижу одно решение - убрать формулу в SQL и поставить ее в форму на клиенте.
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32070626
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поизучай Resync Command (Команда синхронизации)
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32070698
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Pavel
Извени, но почитал и не дошло, что именно писать в это свойство ?
И как быть если заполнение идет непосредственно в таблицу (без формы)?
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32070777
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 lsnk
Свойстов Resync Command усть у ADODB рекордсета и формы проекта A2K. Это строка SQL запроса (или имя хранимой процедуры), вращающая запись для занесения в форму\рекордсет при опреациях вставки и изменения. Набор полей должен в точности соответствовать набору источника данных. Критерием отбора является значение ключевого поля, которое подставляется автоматически в параметр запроса (процедуры), т.е. что-то вида SELECT ... FROM ... Where ... = ?

Если ты хочешь колотить данные прямо в таблицу, то рекомендую создать табличную форму с прописанными свойствами "Однозначная таблица" и "Команда синхронизации". Разницы никто не заметит. Кстати, свойство "Однозначная таблица" исползуется если источник данных содержит более одной таблицы, но не будет ошибкой заполнить его и при одной. Почитай вот тут:
http://www.delphikingdom.com/helloworld/ado01.htm
http://www.delphikingdom.com/helloworld/ado02.htm
http://www.delphikingdom.com/helloworld/ado03.htm
Правда это для Delphi, но идея отлично изложена.
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32070803
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Pavel
Спасибо, ситуация прояснилась..., но вопрос остался, тк:
"Критерием отбора является значение ключевого поля, которое подставляется автоматически в параметр запроса (процедуры), т.е. что-то вида SELECT ... FROM ... Where ... = ? "
Так вот это ключевое поле и определяется формулой.
Для примера:
Таблица PROBA
ID - int -ключевое и в значении по умолчанию стоит формула
TXT - varchar(10)
Форма на заполнение этой таблицы
Что надо написать в свойстве команда синхронизации?
Select ID, TXT From PROBA Where ID=? - не работает...
Зы:Извеняюсь за непонятливость, туплю я сегодя.
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32071030
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не сталкивался с такой ситуацией?
Что все используют ключевые поля identity?
Может случайное число надо делать не через значение по умолчанию в таблице?
Помогите советом, очень надо!(весь процесс перехода стоит)
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32071059
Кидай сюда скрипт таблицы, разберемся.
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32071171
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да таблицу я уже описывал, достаточно двух полей, главное что бы в ключевом поле была формула в значении по умолчанию.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE [dbo].[PROBA] (
	[ID] [int] NOT NULL ,
	[TXT] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PROBA] WITH NOCHECK ADD 
	CONSTRAINT [DF_PROBA_ID] DEFAULT (floor(((rand() *  1000000000  + rand((datepart(hour,getdate()) *  10000000  + datepart(minute,getdate()) *  100000  + datepart(second,getdate()) *  1000  + datepart(millisecond,getdate()))) *  1000000000 ) * sign(( 0 . 5  - rand()))))) FOR [ID],
	CONSTRAINT [PK_PROBA] PRIMARY KEY  NONCLUSTERED 
	(
		[ID]
	)  ON [PRIMARY] 
GO



Вроде так.(создавал мастером для быстроты). В принципе сама формула не так важна, важно ее наличие.
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32071221
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ЗАЧЕМ САМОМУ ФОРМИРОВАТЬ ПСЕВДОУНИКАЛЬНОЕ ЗНАЧЕНИЕ?
Есть же стандартное решение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE [dbo].[PROBA] (
	[id] [uniqueidentifier] NOT NULL ,
	[TXT] [varchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PROBA] WITH NOCHECK ADD 
	CONSTRAINT [DF_PROBA_id] DEFAULT (NEWID()) FOR [id],
	CONSTRAINT [PK_PROBA] PRIMARY KEY  NONCLUSTERED 
	(
		[id]
	)  ON [PRIMARY] 
GO
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32071295
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот тип данных я конечно поизучаю, но как мне кажется будут проблемы, тк мне надо во всех таблица (в том числе и в справочниках) ставить случайные числа в ключевых полях, как их потом связывать..., да и в программах в access-е как оперерировать с этим типом, всетаки 16байт...? К томуже база не новая, уже рабочая...
То есть спасибо конечно за совет(попробую обязательно), но хотелось конечно именно с формулой, может просто не значении по умолчанию, а какнибудь через функции или триггера(пока решения не вижу кроме того что написал в самом начале и в повестки дня для себя не снял:()
...
Рейтинг: 0 / 0
Первичный ключ в связке MS SQL - Access
    #32071315
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Pavel
При попытке использовать тип uniqueidentifier сразу сталкнулся с проблемами:
1. Не преобразовывает старые значения типа int в этот тип
(а база рабочая)
2.Как в VBA использовать это тип к примеру тут
Me.ServerFilter = "IDP1='" & (Me!IDP1F) & "'"
Me.ServerFilterByForm = True
где поля IDP1 и IDP1F(типа выбор для фильтра) - uniqueidentifier. Так и через str(Me!IDP1F) не прокатывает...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Первичный ключ в связке MS SQL - Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]