Выручайте, проблема с recordset

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Выручайте, проблема с recordset

Сообщение xfolder » 30.05.2006 (Вт) 19:13

проблема следующая

есть sql server и программа которая работает с ним через ADO.

открываю соеденение так RS.Open Str, DB, adOpenForwardOnly, adLockReadOnly

получаю рекорсет и тут начинается проблемы, начинаю считывать строку за строкой и вдруг данные исчезают. то есть запрашиваю

RS.Fields("Name") а он возвращает Null, хотя вижу что данные там есть

причем выборочно, такое чувство что после какойто колонки данные исчезают.

заметил что от перестановки порядка колонок в таблице проблема может и исчезнуть но почему так?

все началось когда я убрал галочки Allow nulls и выставил default values

есть ли решение у этой проблемы?

help

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 30.05.2006 (Вт) 23:40

Можно поподробнее, данные в таблице код извлечения да и сам запрос?
Пора уже всем хорошим людям собраться и убить всех плохих людей.

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 30.05.2006 (Вт) 23:51

вот к примеру такая таблица

StockID int
title nvarchar(50)
class int
type int
sale_price money
actual_price money
company nvarchar(50)
phone nvarchar(50)
unlimited int
status int
code int
stock int
notes nvarchar(255)
date_in datetime

запрос SELECT * FROM tbl_stock WHERE status=1 AND stock > 0 AND class=3 OR status=1 AND stock=-555 AND class=5

в итоге колонка title всегда возвращала null пока я не перенес date_in в конец таблицы.

:(

я встречал такую же проблему и ранее в asp когда так же почемуто из за данных или положения колонок несчитывались данные.

но сейчас это просто катастрофа. весь день лазаю по инету ищу решение но безуспешно.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 30.05.2006 (Вт) 23:54

К слову:
Иногда полезно расставлять скобки... Да и запрос типа "SELECT *" не есть гуд.
А я все практикую лечение травами...

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:02

SELECT name, date_in,actual_price FROM tbl_stock WHERE (status=1) AND (stock > 0) AND (class=3) OR (status=1) AND (stock=-555) AND (сass=5)

реально поможет или это просто совет для прозводительности?

просто сегодня перенесли проект на sql 2005 и началось.... :?

у меня более 20 форм если это поможет то придется сесть и менять но хотелось бы точнее знать в чем проблема, производительность не критична на данный момент.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 31.05.2006 (Ср) 0:04

Первый раз слышу, чтобы от перестановки полей местами что-либо менялось.

Проверь, что выводит твой запрос, например, в SQL Query Analyzer'e. Есть подозрение, что скобки ты просто пропустил, может в этом проблема.

Код: Выделить всё
SELECT name, date_in,actual_price FROM tbl_stock WHERE (status=1 AND stock > 0 AND class=3) OR (status=1 AND stock=-555 AND сass=5)


P.S. Пользуйся кнопками форматированием кода.
Последний раз редактировалось VVitafresh 31.05.2006 (Ср) 0:05, всего редактировалось 1 раз.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 0:05

Я говорил про скобки в условиях...
"SELECT *" использовать стоит лишь тогда, когда нужно вытащить действительно все поля, что бывает достаточно редко.
Первый раз слышу, чтобы от перестановки полей местами что-либо менялось.
Вот-вот. Просто я не думаю что в MSSQL может быть такой глюк...
А я все практикую лечение травами...

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 31.05.2006 (Ср) 0:07

SELECT name, date_in,actual_price FROM tbl_stock WHERE (status=1) AND (stock > 0) AND (class=3) OR (status=1) AND (stock=-555) AND (сass=5)
реально поможет или это просто совет для прозводительности?

Ты ничего не изменил...

кроме того (status=1) у тебя дважды... и в данном случае расстановки скобок его можно вынести...

Кроме того
Да и запрос типа "SELECT *" не есть гуд.

Сейчас самый лучший совет...


Как грид заполняешь? Или что ты заполняешь?
Пора уже всем хорошим людям собраться и убить всех плохих людей.

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:10

хмм мне тоже кажется все это странно но проблема появилась когда я перенеся данные выставил allow nulls= false и default value

операторы начали тут же сообщать что поля стали пустыми :(

временно пришлось перенести назал на аксес, там все работает но правда очень медленно

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 31.05.2006 (Ср) 0:13

Еще раз повторюсь: проверь, что выводит твой запрос в Query Analyzer'e -- многое может стать на свои места.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 0:13

выставил allow nulls= false и default value
Есть причины считать что после этого все пустые поля приняли значение по умолчанию?
А я все практикую лечение травами...

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:16

к примеру
так я заполняю листвью который показывает список товаров
(для доступа к дб у меня свой класс )

DB.OpenRS "SELECT * FROM tbl_stock WHERE status=1 AND stock > 0 AND class=" & StockTabs.SelectedItem.Tag & " OR status=1 AND stock=-555 AND class=" & StockTabs.SelectedItem.Tag

While DB.Readable
Set ItmX = content.ListItems.Add(, "p" & DB.V("StockID"), DB.V("title")): ItmX.SubItems(1) = IIf(Not DB.V("stock") = -555, DB.V("stock"), "U"): ItmX.SubItems(2) = Money(DB.V("sale_price"))
ItmX.Tag = IIf(Not DB.V("stock") = -555, DB.V("stock"), "U")
Wend

сегодня днем title был null :?

сейчас вроде ок но опять таки проблема не решена, она может всплыть в самый неподходящий момент

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 0:19

VVitafresh писал(а):Еще раз повторюсь: проверь, что выводит твой запрос в Query Analyzer'e -- многое может стать на свои места.

Да, и заключай код в теги, будь человеком...
Последний раз редактировалось Twister 31.05.2006 (Ср) 0:20, всего редактировалось 1 раз.
А я все практикую лечение травами...

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 31.05.2006 (Ср) 0:19

:shock:
Код отформатировать лень?
Пора уже всем хорошим людям собраться и убить всех плохих людей.

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:21

GB826 писал(а)::shock:
Код отформатировать лень?


не лень просто работы на пару часов, не хотелось бы тратить их зря

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 0:22

не лень просто работы на пару часов, не хотелось бы тратить их зря
На каких пару часов? :roll:
Просто тем самым ты показываешь свое неуважение к участникам форума...
А я все практикую лечение травами...

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:24

пока бы заставить систему читать данные если скобки критичны то хорошо поменяю но как и говорю что код я сегодня не менял, менял только настройки not allows null и положение колонок
в итоге нужные колонки начинали работать зато другие исчезать.

мистика.

я конечно понимаю что пунктуация и синтакс важен но может ли от настолько влиять на результат?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 0:26

А ты проверил результат в Query Analyzer'e? :?
А я все практикую лечение травами...

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:26

Twister писал(а):
не лень просто работы на пару часов, не хотелось бы тратить их зря
На каких пару часов? :roll:
Просто тем самым ты показываешь свое неуважение к участникам форума...


да ладно вам обижатся я ищу точного совета и говорю же что запросы не менялись а результат разный

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:28

Twister писал(а):А ты проверил результат в Query Analyzer'e? :?


пытаюсь, момент!

данные изменились, пытаюсь смоделировать туже ситуацию что была днем

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 0:28

Запросы не менялись, но менялось
allow nulls= false и default value

Twister писал(а):Есть причины считать что после этого все пустые поля приняли значение по умолчанию?
А я все практикую лечение травами...

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:36

Twister писал(а):Запросы не менялись, но менялось
allow nulls= false и default value

Twister писал(а):Есть причины считать что после этого все пустые поля приняли значение по умолчанию?


пустые поля были но перед этими изменениями я их заполнил значениями по умолчанию иначе studio недает сохранить изменения

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 31.05.2006 (Ср) 0:48

Плохо, когда данные могут уронить прогу :о( , как так?

Ты случаем не в 2005 студии?
Пора уже всем хорошим людям собраться и убить всех плохих людей.

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 0:51

GB826 писал(а):Плохо, когда данные могут уронить прогу :о( , как так?

Ты случаем не в 2005 студии?


в ней самой

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 31.05.2006 (Ср) 0:57

Чего же ты мозг тогда паришь :о(
Нафиг тебе там рекордсеты? Ай, чилавег, редиска ты :о(

Там свои классы для работы с БД.
Ищи все что на Data начинается ....Set, Reader, Adapter и т.д.
Последний раз редактировалось GB826 31.05.2006 (Ср) 1:04, всего редактировалось 1 раз.
Пора уже всем хорошим людям собраться и убить всех плохих людей.

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 1:03

GB826 писал(а):Чего же ты моск тогда паришь :о(
Нафиг тебе там рекордсеты? Ай, чилавег, редиска ты :о(

Там свои классы для работы с БД.


ты о чем?

как иначе еще данные получать то как не с одбс

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 31.05.2006 (Ср) 1:07

Смотри апдейт.
Пора уже всем хорошим людям собраться и убить всех плохих людей.

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 31.05.2006 (Ср) 1:10

GB826 писал(а):Смотри апдейт.


апдейт чего?

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 31.05.2006 (Ср) 1:17

Там свои классы для работы с БД.
Ищи все что на Data начинается ....Set, Reader, Adapter и т.д.




Все я спать, а то придет злой модер и скажет тебе, что ты не туда написал... А мне скажет, что я не вежливо ответил и много грубил и флудил...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.05.2006 (Ср) 5:26

Всенепременно придёт.


xfolder
Если ты используешь ADO через interop, ты, несомненно, ССЗБ, а также ошибся разделом.
И второе: если ты, после сказанного в этом топике, ещё раз выложишь неотформатированный код, то я его буду удалять вместе с постом и с темой.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

След.

Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: SemrushBot и гости: 43

    TopList