powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохр.процедура не хочет работать правильно в Access
8 сообщений из 8, страница 1 из 1
Сохр.процедура не хочет работать правильно в Access
    #32864230
Vostok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здравствуйте. у меня проблема с сохр.процедурой. Т.е. есть сохр.процедура, созданная в SQL-Server (база данных у меня там). Сама база подключена к AccessXP через ADO. Так вот, процедура сама по себе работает замечательно. Вообще БД у меня про студентов, и эта процедура занимается тем, что переводит студентов из одной группы в другую. Когда в Access выполняешь сохранку отдельно, просто запускаешь ее, она запрашивает Группа_OLD (где вводится номер группы, которую надо перевести), а затем Группа_New (вводится номер группы, куда надо перевести). Процедура выполняется, и она переводит всю группу.
Но когда я работаю с формой. Т.е. на форме список групп, выбираю группу, во втором списке высвечиваются все студенты этой группы. Нажимаю кнопку 'Перевести группу', появляется окно со списком студентов этой группы и номером группы(Группа_Old), и предлагается из другого списка выбрать новую группу(Группа_New), куда переводим. Нажимаем кнопку 'Перевести' и.... переводится только один студент, первый в списке. Остальные остаются в группе.

Сохранка сама по себе выглядит так
CREATE PROCEDURE Perevod_group

@Группа_Old int,
@Группа_New int

AS
UPDATE dbo.Студенты SET
Группа=@Группа_New
WHERE (Группа=@Группа_Old)
GO

И она работает, может что-то в коде VB не так?

А код VB на кнопку, которая ссылается как бы на эту сохранку такой

Private Sub Per_group_Click()
DoCmd.RunCommand acCmdSaveRecord
Set cnn = Application.CodeProject.Connection
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 10
cmd.Parameters.Refresh

cmd.CommandText = "Perevod_group"
cmd.Parameters(1) = Группа_Old.Value
cmd.Parameters(2) = Группа_New.Value
cmd.execute
FormMode = cmd.Parameters(0)

cnn.Close
Forms("Группы").Controls("СпСтудентов").Requery
Forms("Группы").Controls("СпГрупп").Requery
MsgBox ("Группа переведена!")
DoCmd.Close
End Sub

Подскажите в чем проблема!!! Пожалуйста
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32864283
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотри профайлером в каком виде вызывается хранимка
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32864286
Vostok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм... а это как?
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32864289
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это mdb или adp? Судя по Vostok...Set cnn = Application.CodeProject.Connection...это adp.

Vostok...
Forms("Группы").Controls("СпСтудентов").Requery
Forms("Группы").Controls("СпГрупп").Requery ...не говорит абсолютно ни о чем. Приведите источник записей для списка.

Vostok... и.... переводится только один студент, первый в списке. Остальные остаются в группе. ...Как Вы это определили?

Не стоит ли где нибудь в коде типа:
Код: plaintext
cnn.Execute "SET ROWCOUNT 1"

Таблица на сервере действительно содержит все необходимые изменения после выполнения процедуры?
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32864297
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а cmd.Parameters.Refresh будет работать Аpplication.CodeProject.Connection?
С
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32864299
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт..
Кстати, а cmd.Parameters.Refresh будет работать Аpplication.CodeProject.Connection?
С CurrentProject.Connection ведь вроде не работает.
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32866132
Vostok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO MVN
Да, это adp-проект. Как я определила, что переводится только один студент? тем, что просто напросто проверила. Вызвала форму со списком групп и студентов, выбрала группу, где есть три человека, попыталась ее перевести. Выбрала новую группу, куда их перевести нажала на кнопку (на которую на писан код VB, который вызывает сохранку). Первый человек из группы сразу же оказывается в другой группе, а списке остаются два человека. Вот!

cnn.Execute "SET ROWCOUNT 1" - такой надписи нигде в коде нет.

Источник записей для списка групп такой
SELECT DISTINCT "Группы"."IDГруппы","Группы"."НазваниеГруппы" FROM "Группы" INNER JOIN "Студенты" ON "Группы"."IDГруппы"="Студенты"."Группа";
Т.е. выводятся только те группы, где есть студенты.

и на этот же списко на свойство 'После Обновления'
Private Sub СпГрупп_AfterUpdate()
Me.СпСтудентов.RowSource = "SELECT Студенты.IDСтудента, Студенты.Группа, Студенты.Фамилия, Студенты.Имя, Студенты.Отчество FROM Студенты WHERE Группа=" & Me.СпГрупп
End Sub
Для вывода студентов этой группы в другой список...

TO Alexander G

Кстати, а cmd.Parameters.Refresh будет работать Аpplication.CodeProject.Connection?
С CurrentProject.Connection ведь вроде не работает.
Но ведь все работает....
Только вот процедура не хочет выполнятся
...
Рейтинг: 0 / 0
Сохр.процедура не хочет работать правильно в Access
    #32867000
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После вызова процедуры из формы проверьте таблицы на сервере, действительно ли там перемещвется только 1 запись? Если нет, то нужно смотреть формы. Если да, то Shuhardпосмотри профайлером в каком виде вызывается хранимкапрофайлер - утилита SQL-Server. Есть ли ограничения на таблицах по уникальным значениям, возможно обновление не происходит из-за наличия повторяющихся записей.

А для чего у Вас в коде стоит
Код: plaintext
DoCmd.RunCommand acCmdSaveRecord
может в поле Vostokпоявляется окно со списком студентов этой группы и номером группы (Группа_Old)Вы вводите значение новой группы (есс-но для первой записи), а потом сохраняете его?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохр.процедура не хочет работать правильно в Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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