powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Recordset
23 сообщений из 73, страница 3 из 3
Recordset
    #32166512
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jem
На той информации которая есть полностью повторил
Ни в 2000 ни 2002 ошибки нет.

Такая ошибка была когда в триггере на таблицу, в которую добавляешь запись не было строки
Set Nocount On
...
Рейтинг: 0 / 0
Recordset
    #32166513
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в качестве команды синхронизации прекрасно работает хп с параметром.
...
Рейтинг: 0 / 0
Recordset
    #32166514
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://hiprog.com/access/article.asp?id=368
...
Рейтинг: 0 / 0
Recordset
    #32166516
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jem
>Если говорить про MDB, то без рекордсета, насколько я понимаю нельзя осуществить работу с данными формы внутри транзакции к примеру..

Ну, во первых я говорил про присваивание Set Me.Recordset=rs.
Во-вторых, транзакции внутри формы нужны (если конечно отбросить Акес, который все-таки свои операции делает в неявных транзакциях) только при наличи подчиненых форм, что легко организуется и без использования Set Me.Recordset=rs. К тому же, если говорить о adp, то случаи, когда нужно выполнения транзакции имеено на клиенте, мне лично, слабо представляются.
Хотя, возможно, я не сталкивался с такими задачами...

Jem, приведи пример, когда тебе нужна транзакция в форме, и будет несколько решений без использования "Set Me.Recordset=rs"
...
Рейтинг: 0 / 0
Recordset
    #32166517
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хам: см. справку "AddNew Method"
Jem: И что там есть такого что я не делаю по-твоему?
Хам: есть и я вижу а ты, судя по вопросу, не увидел а жаль
...
Рейтинг: 0 / 0
Recordset
    #32166522
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к ВС:
там есть пример
добавления записей
не через существующий
рекордсет
а НОВЫЙ
тогда и глюков не будет
...
Рейтинг: 0 / 0
Recordset
    #32166528
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Слава Аллаху, всемилостивейшему и всемогущему! Хам заговорил!
...
Рейтинг: 0 / 0
Recordset
    #32166529
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я еще и крестиком
вышивать умею
...
Рейтинг: 0 / 0
Recordset
    #32166569
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Viktor
Согласен.
2 ALL


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE [Cust] 
([IdCust] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
[Name] [char] ( 10 ) COLLATE Cyrillic_General_CI_AS NULL ,
CONSTRAINT [PK_Cust] PRIMARY KEY ([IdCust]	)

INSERT INTO Cust (Name) VALUES ('Хам')

CREATE TABLE [MySale] 
([IdSale] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
[IdCust] [int] NOT NULL , [Summa] [money] NULL ,
CONSTRAINT [PK_MySale] PRIMARY KEY  ([IdSale]),
СONSTRAINT [FK_MySale_Cust] FOREIGN KEY 
([IdCust]) REFERENCES [Cust] ([IdCust])


CREATE PROCEDURE prTest
AS
SELECT dbo.MySale.Summa, dbo.MySale.IdCust, dbo.Cust.Name
FROM dbo.Cust INNER JOIN
dbo.MySale ON dbo.Cust.IdCust = dbo.MySale.IdCust


Создаем форму:
Источник записей: prTest
Уникальная таблица: Mysale
Код на кнопке формы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Кнопка6_Click()
Dim rst As ADODB.Recordset
Set rst = Me.Recordset
With rst
    .AddNew
    !IdCust =  1 
    !Summa =  350 
    .Update
End With
End Sub

Ошибка таже! Может я конечно по запаре притупил, посмотите свежим взглядом.
Обращу также внимание еще раз на то что
ошибка выскакивает, данные в форме не добавляютя однако если на серваке открыть таблицу то все в порядке строчка добавилась.
Соответсвенно проблема в форме.
Вроде все
...
Рейтинг: 0 / 0
Recordset
    #32166577
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
CREATE PROCEDURE prTest_resync @IdSale Int
AS
SELECT dbo.MySale.Summa, dbo.MySale.IdCust, dbo.Cust.Name
FROM dbo.Cust INNER JOIN
dbo.MySale ON dbo.Cust.IdCust = dbo.MySale.IdCust
WHERE (dbo.MySale.IdSale = @IdSale)


В форме в команде синхронизации напиши
Код: plaintext
prTest_resync ?
...
Рейтинг: 0 / 0
Recordset
    #32166591
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alter PROCEDURE prTest
AS
set nocount on
SELECT dbo.MySale.Summa, dbo.MySale.IdCust, dbo.Cust.Name, dbo.MySale.[IdSale]
FROM dbo.Cust INNER JOIN
dbo.MySale ON dbo.Cust.IdCust = dbo.MySale.IdCust


строка синхронизации


SELECT dbo.MySale.Summa, dbo.MySale.IdCust, dbo.Cust.Name, dbo.MySale.[IdSale]
FROM dbo.Cust INNER JOIN
dbo.MySale ON dbo.Cust.IdCust = dbo.MySale.IdCust where dbo.MySale.[IdSale]=?
...
Рейтинг: 0 / 0
Recordset
    #32166602
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нужен тут Set Nocount
...
Рейтинг: 0 / 0
Recordset
    #32166637
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ALL
я может быть уже поздно, но..

Dim rst as ADODB.Recordset
Dim intA as Integer
set rst= New ADDB.Recordset
так Гетц советует. и кажется это очень правильно. у меня это оказывало влияние на работу ADP

Set rst=Me.Recordset
Rst.AddNew
...
Рейтинг: 0 / 0
Recordset
    #32166650
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jem
Чем код отличается от такого?
DoCmd.GoToRecord acDataForm, Me.name, acNewRec
Me.IdCust = 1
Me.Summa = 350
DoCmd.RunCommand acCmdSelectRecord
для чего использовать рекордсет?

ошибка "Key value for this row was changed or deleted at the data store. The local row is now deleted" возникает на
связке Access XP+SQL 7.0
если Access XP+SQL 2000 или Access 2000+SQL 7.0 - то этой ошибки нет
подозреваю, что если на компьютер поставить последний MDAC, то и Access XP+SQL 7.0 все будет работать.

2 Pavel
Не нужен тут Set Nocount
В данном случае может быть и не нужен, но я себе поставил за правило, все процедуры и триггеры начинать с установки этой опции. А то потом вот так же как автор этого топика решаешь проблемы которых на самом деле не должно быть.
Приведу пример:
есть ленточная форма на таблицу, в таблице триггер правит записи в другой таблице, так вот пока в триггере не поставил Set Nocount On
выдавалось сообщение похожее как у автора этого топика.
...
Рейтинг: 0 / 0
Recordset
    #32166651
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pavel
Ваша команда синхронизации должна выполниться быстрее ведь так?
Просто писать в строке SQL запрос (он у меня достаточно сложный) может затянуть выполнение синхронизации. Я про это писал выше, мне кажется что лучше выполнить ME.Requry формы что должно по идее вызвать хп вновь, чем выполнять при синхронизации неоптимизированный запрос, но это только догадки..
2 Вадя
Мне кажется Гетц так не советует, по логике ООП строка
set rst new ADODB.Recordset
лишняя
...
Рейтинг: 0 / 0
Recordset
    #32166653
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jem
Requery и ResyncCommand это разные вещи
...
Рейтинг: 0 / 0
Recordset
    #32166689
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jem
Команда синхронизации формы затрагивает только одну запись, тогда как requery - все.
команда синхронизации в виде хп отработает быстее запроса, т.к. хранится на сервере в откомпилированном виде. Кроме того, использование хп позволяет ограничить доступ непосредственно к таблицам.
вадя
В сдучае явного присваивания рекордстета никаких NEW не нужно. NEW исрользуется для явной инициализации нового рекордсета. В случае Set rs = Me.Recordset просто рождается ссылка на существующий обьект, новый не создается.
incold
С Set Nocount On все предельно просто - после любой операции с данными MSSQL возвращает строчку с указанием количество затронутых операцией записей. Set Nocount On подавляет это сообщение. Если процедура или триггер (в любой комбинации) возвращает эту строчку до интересующего набора записей, то возникает ошибка.
...
Рейтинг: 0 / 0
Recordset
    #32166769
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Jem
>"Key value for this row was changed or deleted at the data store. The local row is now deleted"

Что-то я в MSDN ничего про эту ошибку не нашел.
Приведи ее полный текст, номер и прочую инфу. Может эта проблема давно решена каким-нить сервис-паком, а мы тут лбами бьемся.
Поищи на support.microsoft.com описание. Чего гадать-то?
...
Рейтинг: 0 / 0
Recordset
    #32167717
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заглохла ветка что-то...
...
Рейтинг: 0 / 0
Recordset
    #32167742
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у формы стоит "разрешить добавление=да"
...
Рейтинг: 0 / 0
Recordset
    #32167744
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у Гетца почитать стр.242-246. что-то подобное
...
Рейтинг: 0 / 0
Recordset
    #32167749
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрите стрелку на ветку, там продолжение:\r

...
Рейтинг: 0 / 0
Recordset
    #32167750
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
\\r
/topic/33042\\r
...
Рейтинг: 0 / 0
23 сообщений из 73, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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