Булево значение TRUE на других локалях другое, помогите!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.04.2007 (Ср) 13:39

По моему сей глюк, не есть глюк VB. А глюк стоит поискать в другом месте.
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение Andrey Fedorov » 04.04.2007 (Ср) 14:20

Pantalone писал(а):Я пишу правильно.
"Select * From XTable Where XBoolean = " & True


Нет, ты как раз пишешь неправильно. О чем уже куча народу тут сказала.

Вот так будет на 100% работать правильно в любых вариациях локали юзера, причем не только с Access-ом :

Код: Выделить всё
Select * From XTable Where XBoolean <> 0
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение Andrey Fedorov » 04.04.2007 (Ср) 14:37

Pantalone писал(а):Этож надо додуматься переводить значение True к установленной локали. Все функции и прочее на инглише как было так и осталось, а тут нате, сидите на французской локали да еще с установленным файлом vb6fr.dll, так вот вам Vrai, распишитесь и делайте че хотите.


Это еще что - злобный MS еще даты и числа к локали пользователя приводит - ты еще тот его глюк, видимо, не прочувствовал:

А еще пользователи не могут заценить мой любимый гразно-салатовый фон у окошек с синенькими буковками по нему. Правда эту проблему я уже разобрался как решить - вместо системных установок цвета я ему свои забабахаю!

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

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

Сообщение GSerg » 04.04.2007 (Ср) 15:03

Pantalone писал(а):Я пишу правильно.
"Select * From XTable Where XBoolean = " & True

В самом деле? Это в твоём понимании "правильно"? В детский сад, на горшок.
Правильно - "Select * From XTable Where XBoolean = True"

Pantalone писал(а):Это просто очередной баг VB

Мне кажется, тебе в явной форме запретили говорить эти слова, потому что слишком часто ты говорил их, и ещё ни разу к месту.

Pantalone писал(а):которых при написании проги я выявил просто немерянно.

Что ж я при написании прог не выявил ни одного?

Pantalone писал(а):так вот вам Vrai, распишитесь и делайте че хотите.

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

Функция CStr (а именно она неявно вызывается в твоём "select" & true) предназначена для формирования human-readable строки. Эту строку нельзя использовать нигде, кроме как для показа пользователю.
Если ты этого не понимаешь - см. п. 1, про детский сад.
Тебя не удивляет, что CStr(1.1) вернёт "1,1" на русской локали и "1.1" на английской? Потому что она не предназначена ни для чего, кроме окончательного вывода пользователю, и то, что ты её используешь для промежуточного хранения результатов - признак твоего ламерства и больше ничего.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 04.04.2007 (Ср) 15:28

Объясняю...

GSerg писал(а):
Pantalone писал(а):Я пишу правильно.
"Select * From XTable Where XBoolean = " & True

В самом деле? Это в твоём понимании "правильно"? В детский сад, на горшок.
Правильно - "Select * From XTable Where XBoolean = True"


Под этим:
"Select * From XTable Where XBoolean = " & True
я имел в виду что вместо True будет любая булева переменная или значение логического контрола, а не прямое True, не надо пожалуйста считать всех тупыми.

GSerg писал(а):
Pantalone писал(а):Это просто очередной баг VB

Мне кажется, тебе в явной форме запретили говорить эти слова, потому что слишком часто ты говорил их, и ещё ни разу к месту.


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

GSerg писал(а):
Pantalone писал(а):которых при написании проги я выявил просто немерянно.

Что ж я при написании прог не выявил ни одного?


Я пишу достаточно сложные проги, а не сд эджекторы, и проги эти нацелены на мультиязычное использование, под любыми языковыми настройками и локализациями 2000/XP, и уж поверь багов в VB при их написании я повидал там предостаточно. Если ты их не видел, то это не говорит о том что их там нет.

GSerg писал(а):
Pantalone писал(а):так вот вам Vrai, распишитесь и делайте че хотите.

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


Многие считают себя мудрецами, особенно в тех местах где они и не были ни разу.

GSerg писал(а):Функция CStr (а именно она неявно вызывается в твоём "select" & true) предназначена для формирования human-readable строки. Эту строку нельзя использовать нигде, кроме как для показа пользователю.
Если ты этого не понимаешь - см. п. 1, про детский сад.
Тебя не удивляет, что CStr(1.1) вернёт "1,1" на русской локали и "1.1" на английской? Потому что она не предназначена ни для чего, кроме окончательного вывода пользователю, и то, что ты её используешь для промежуточного хранения результатов - признак твоего ламерства и больше ничего.


Проехали.

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

Сообщение GSerg » 04.04.2007 (Ср) 16:07

Pantalone писал(а):Под этим:
"Select * From XTable Where XBoolean = " & True
я имел в виду что вместо True будет любая булева переменная или значение логического контрола, а не прямое True, не надо пожалуйста считать всех тупыми.

Вот после этого объяснения я точно буду так считать.

"Select * From XTable Where XBoolean = " & b, где b имеет тип boolean - это то же (следи за руками, говорю медленно...), что "Select * From XTable Where XBoolean = " & CStr(b).
А CStr(b) (ещё чуть-чуть, напрягись...) возвращает строку, предназначенную для показа пользователю и больше ни для чего.

Впрочем, то, что ты собираешь SQL-запрос конкатенацией, а не параметрами, уже достаточно показывает твою квалификацию.

Pantalone писал(а):Я пишу достаточно сложные проги

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

Pantalone писал(а):а не сд эджекторы, и проги эти нацелены на мультиязычное использование, под любыми языковыми настройками и локализациями 2000/XP

Я пишу проги, полностью управляющие рабочим потоком предприятия, в России и за рубежом. И ещё ни разу я не сталкивался с проблемами локалей, потому что я знаю, где они могут возникнуть, а также знаю те места в коде, где они обязательно возникнут, если тупо не понимать, что делаешь, и что за этим стоит.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 04.04.2007 (Ср) 16:45

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

VERITAS
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 12.12.2004 (Вс) 20:31

Сообщение VERITAS » 04.04.2007 (Ср) 18:00

Pantalone не ищи легких путей, да и воздастся тебе. Пора бы уже прислушаться к советам, а не высказывать свои недовольства, по поводу решения задачи. Тебе уже стока человек сказали об правильном и граматном решении проблемы. Неужели на столько сложно пробежаться по всему коду и сделать все правильно, вместо того чтобы придумывать себе лишние проблемы и загружать ими других. Пока ты будешь искать выход из этой ситуации через "пень-колоду" - пользователи твоей программы "забъют" на такую тех поддержку.
В любом случае на помощь прийти может "Замена". И то что ты изначально допустил погрешность при написании кода - вот и выплыло тебе в итоге. Зато в следующий раз не допустишь такой ошибки.

Мы в ответе за то что написали (с)
No comments ...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 04.04.2007 (Ср) 18:25

Уже разобрался и довольно просто, а если бы сразу же бросился выполнять все что насоветовали, сидел бы неделю и парился с заменами. Отсюда вывод: кто ищет - тот найдет! Но все равно спасибо за советы и даже критику, ведь каждый считает себя умней других :D

Пред.

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

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

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

    TopList