Глюк с типами курсоров

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Глюк с типами курсоров

Сообщение AndrewMarcovich » 22.07.2005 (Пт) 14:40

При таком вот запросе все нормально,проверяется значение поля и меняется на 1,если не равно 1. repair_code-уникальный ключ,запрос возвращает только одну запись!!!.
cn.Open "qqq", "q", "q"
rs.Open "select is_arc from a_repairs where repair_code='100'", cn, ADOPENKEYSET, adLockPessimistic
If rs!is_arc = 1 Then
...
Else
rs!is_arc = 1
rs.Update
End If
rs.Close
cn.Close

НО стоит изменить только тип курсора:

cn.Open "qqq", "q", "q"
rs.Open "select is_arc from a_repairs where repair_code='100'", cn, ADOPENFORWARDONLY, adLockPessimistic
If rs!is_arc = 1 Then
...
Else
rs!is_arc = 1
rs.Update
End If
rs.Close
cn.Close
При этом значения меняются у ВСЕХ записей,где is_arc<>1,как бы невзираю на условие отбора по repair_code!!!
ПОЧЕМУ ТАК ПРОИСХОДИТ?!!База в SQL SERVER 2000.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Глюк с типами курсоров

Сообщение Andrey Fedorov » 22.07.2005 (Пт) 15:17

AndrewMarcovich писал(а):При этом значения меняются у ВСЕХ записей,где is_arc<>1,как бы невзираю на условие отбора по repair_code!!!
ПОЧЕМУ ТАК ПРОИСХОДИТ?!!База в SQL SERVER 2000.


Скрипт создания этой таблички покажи...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 22.07.2005 (Пт) 15:21

Ну что-то вроде того...
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[a_repairs]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[a_repairs]
GO

CREATE TABLE [dbo].[a_repairs] (
[id_no] [int] IDENTITY (1, 1) NOT NULL ,
[rmex] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[repair_type] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[create_time] [datetime] NULL ,
[finish_time] [datetime] NULL ,
[broke_description] [varchar] (500) COLLATE Cyrillic_General_CI_AS NULL ,
[view_description] [varchar] (500) COLLATE Cyrillic_General_CI_AS NULL ,
[repair_code] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[client_name] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[shop_name] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[model_name] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[serial_no] [varchar] (100) COLLATE Cyrillic_General_CI_AS NULL ,
[repair_state_id] [int] NULL ,
[compl_another] [varchar] (500) COLLATE Cyrillic_General_CI_AS NULL ,
[compl_check_values] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[warranty_no] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[warranty_date] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[predoplata] [int] NULL ,
[sogl_price] [int] NULL ,
[ktoSdal] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[is_arc] [int] NULL
) ON [PRIMARY]
GO

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.07.2005 (Пт) 15:25

AndrewMarcovich писал(а):Ну что-то вроде того...


И где по этому скрипту видно что repair_code-уникальный ключ???
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 22.07.2005 (Пт) 15:26

Ну он уникальный,поверь на слово!! :) Проблема не в этом все же,я думаю...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.07.2005 (Пт) 15:30

AndrewMarcovich писал(а):Ну он уникальный,поверь на слово!! :) Проблема не в этом все же,я думаю...


Не верю! Тем более не верит (точнее не знает) SQL.
Как миниум - укажи что поле id_no у тебя является первичным ключом таблицы. Уже после этого все начнет работать.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 22.07.2005 (Пт) 15:35

Так запрос-то должен одну строку обновлять все равно,правильно?! Ну или,грубо говоря 10, но не все же!!!Он просто условие не воспринимает,хотя с keyset делает как надо!!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.07.2005 (Пт) 15:41

AndrewMarcovich писал(а):Так запрос-то должен одну строку обновлять все равно,правильно?! Ну или,грубо говоря 10, но не все же!!!Он просто условие не воспринимает,хотя с keyset делает как надо!!


У таблицы должен быть первичный ключ, иначе запрос на UPDATE может быть сформирован неверно (точнее не так как тебе хочется, ибо SQL-сервер не телепат). Посмотри профайлером что у тебя получается, если интересно... А с keyset - там иная технология...

В общем укажи для таблицы первичный ключ и не мучайся.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 22.07.2005 (Пт) 15:49

Круто,такого наворотили...Придется в обход,куда деваться...Спасибо,сейчас испытаем!!


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList  
cron