|
|
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
здравствуйте. у меня проблема с сохр.процедурой. Т.е. есть сохр.процедура, созданная в 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 Подскажите в чем проблема!!! Пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 05:46:10 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
посмотри профайлером в каком виде вызывается хранимка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 08:19:31 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
гм... а это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 08:23:37 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
Это mdb или adp? Судя по Vostok...Set cnn = Application.CodeProject.Connection...это adp. Vostok... Forms("Группы").Controls("СпСтудентов").Requery Forms("Группы").Controls("СпГрупп").Requery ...не говорит абсолютно ни о чем. Приведите источник записей для списка. Vostok... и.... переводится только один студент, первый в списке. Остальные остаются в группе. ...Как Вы это определили? Не стоит ли где нибудь в коде типа: Код: plaintext Таблица на сервере действительно содержит все необходимые изменения после выполнения процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 08:27:15 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
Кстати, а cmd.Parameters.Refresh будет работать Аpplication.CodeProject.Connection? С ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 08:36:33 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
Черт.. Кстати, а cmd.Parameters.Refresh будет работать Аpplication.CodeProject.Connection? С CurrentProject.Connection ведь вроде не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 08:38:04 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
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 ведь вроде не работает. Но ведь все работает.... Только вот процедура не хочет выполнятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2005, 07:39:25 |
|
||
|
Сохр.процедура не хочет работать правильно в Access
|
|||
|---|---|---|---|
|
#18+
После вызова процедуры из формы проверьте таблицы на сервере, действительно ли там перемещвется только 1 запись? Если нет, то нужно смотреть формы. Если да, то Shuhardпосмотри профайлером в каком виде вызывается хранимкапрофайлер - утилита SQL-Server. Есть ли ограничения на таблицах по уникальным значениям, возможно обновление не происходит из-за наличия повторяющихся записей. А для чего у Вас в коде стоит Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2005, 08:48:59 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32864299&tid=1669279]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 327ms |

| 0 / 0 |
