Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

не отрабатывается селект к базе((   Найти похожие ветки 

 
-=snoop=- ©   (2005-08-03 09:26) [0]

привет всем, кака-то проблема дурацкая(), есть база *.dbf в ней имеется поле code , которое содержит как русские так и латинские буквы, ситыауия в том, что когда запрос имеет вид

lADO2LoginPro.SQL.Add
              ("select * from login.pro where ltrim(rtrim(code)) = "+""""+"ffffff"+"""") ;
....

запрос отрабатывается, а если вот так


lADO2LoginPro.SQL.Add
              ("select * from login.pro where ltrim(rtrim(code)) like "+""""+"кимли"+"""") ;

то (inttostr(lADO2LoginPro.RecordCount)) возиращает значение 0, подскажите, как решить трабл??


 
Dell3r ©   (2005-08-03 09:37) [1]

Я что-то про + не понял. Зачем столько апострофов?


 
Johnmen ©   (2005-08-03 09:40) [2]

Читать LocalSQL.hlp на предмет изучения применения LIKE.


 
evvcom ©   (2005-08-03 09:42) [3]

А ты уверен, что в login.pro имеется строка с code="кимли"?
Обычно like используют, когда хотят найти записи содержащие данную строку, а не точно ей соответствуют.


 
Dell3r ©   (2005-08-03 09:46) [4]

lADO2LoginPro.SQL.Add
      ("select * from login.pro where ltrim(rtrim(code)) like "кимли") ;


 
-=snoop=- ©   (2005-08-03 09:49) [5]

простите господа...
не "like" , а "="

lADO2LoginPro.SQL.Add
             ("select * from login.pro where ltrim(rtrim(code)) = "+""""+"кимли"+"""") ;

0 а строка есть 100% я ее сам туда пихал.
1 апострофов много, для того чтоб SQL воспринял """"+"кимли"+"""" как "кимли", а не как переменную кимли


 
-=snoop=- ©   (2005-08-03 09:58) [6]

2 Dell3r ©
вообще кусок кода вот как выглядит

....
lcUsrName :=""""+trim(lADO2USERPRO.FieldValues["Code"])+"""" ;
             lcGrNm := """"+trim(lADO2USERPRO.FieldValues["Grupp"])+"""" ;
             lADO2LoginPro.SQL.Clear() ;
             lADO2LoginPro.SQL.Add
              ("select * from login.pro where ltrim(rtrim(code)) like "+lcUsrName)
....

lcUsrName = вычисляется в цикле, а "кимли" так для опытов, проверить


 
Соловьев ©   (2005-08-03 10:02) [7]


> привет всем, кака-то проблема дурацкая(), есть база *.dbf
> в ней имеется поле code

это не база дурацкая а прогер который так говорит, тем более посмотрев код

> lcUsrName :=""""+trim(lADO2USERPRO.FieldValues["Code"])+""""
> ;
>              lcGrNm := """"+trim(lADO2USERPRO.FieldValues["Grupp"])+""""
> ;
>              lADO2LoginPro.SQL.Clear() ;
>              lADO2LoginPro.SQL.Add
>               ("select * from login.pro where ltrim(rtrim(code))
> like "+lcUsrName)

убеждаешся в этом еще раз... читать:
1. TQeruy.Parameters
2. О провйдере через который конектишся.
3. Почему АДО? когда БДЕ с этим лучше будет работать?


 
-=snoop=- ©   (2005-08-03 10:11) [8]

0 не база дурацкая, а проблема...

2 почему ADO? потому что пользовался ADO и ни каких проблем не возникало, тем более с кодировкой


 
-=snoop=- ©   (2005-08-03 10:15) [9]

Соловьев ©  а что с кодом-то?


 
Sergey13 ©   (2005-08-03 10:17) [10]

2 -=snoop=- ©  
Воспользуйся советом из [2]


 
-=snoop=- ©   (2005-08-03 10:24) [11]

вот всегда так, простите за мой фр. обосрут, а что конкретно не говорят...


 
-=snoop=- ©   (2005-08-03 10:39) [12]

по поводу синтаксиса Like Ничего нового не увидел...

lADO2LoginPro.SQL.Add
              ("select * from login.pro where (code LIKE "+"""+"%фффффф%"+"""+")")

вернул 0 записей


 
Sergey13 ©   (2005-08-03 10:59) [13]

2[12] -=snoop=- ©   (03.08.05 10:39)
>по поводу синтаксиса Like Ничего нового не увидел...
Но % добавил. 8-)

>вернул 0 записей
Значит разбирайся с регистром данных в поле CODE.


 
evvcom ©   (2005-08-03 11:37) [14]


> "select * from login.pro where (code LIKE "+"""+"%фффффф%"+"""+")"

Не проще ли:
"select * from login.pro where (code LIKE "%фффффф%")"? Чего извращаться?


 
Ольга   (2005-08-03 12:05) [15]


> содержит как русские так и латинские буквы

Вопрос, я так поняла, не в синтаксисе Like, а в кодировке?
Не выбираются только русские строки или без разницы?


 
-=snoop=- ©   (2005-08-03 13:17) [16]

2Ольга только русские

2evvcom ©  "%фффффф%" = это просто пример с русскими буквами, а так у меня стоит выч.переменная...

с регистром вроде все Ок, но проверю...


 
-=snoop=- ©   (2005-08-03 14:00) [17]

чегото вообСче гон...
вот кусок кода

for s := 1 to lADO2USERPRO.RecordCount do
           begin
             lADO2USERPRO.RecNo := s ;
             lcUsrName :=lADO2USERPRO.FieldValues["Code"] ;
             //lcUsrName :=""""+trim(lADO2USERPRO.FieldValues["Code"])+"""" ;
             lcGrNm := """"+trim(lADO2USERPRO.FieldValues["Grupp"])+"""" ;
             lADO2LoginPro.SQL.Clear() ;
showmessage(upper(lcUsrName)) ;

(скорее всего понятно всем что он делает)
в общем трабл такой , что поле "Code" содержит в себе всЁ теже русские и английские фразы, ды вот

showmessage(upper(lcUsrName)) ;

отрабатывается только на английских фразах, а русские как были в таблице так и идут в том же регистре((((

может у меня каки-нить глобальные настройки не верные???


 
ANB ©   (2005-08-03 14:05) [18]

1. Не изгаляйся с кавычками, а юзай параметры
2. AnsiUpperCase - это для Делфи
3. В FoxPro - функция upper с русским буквами может не работать (во всяком случае - в досовском). Я не знаю движка, который это правит (может ща кто и подскажет), но тупой способ борьбы - написать свою.


 
evvcom ©   (2005-08-03 14:05) [19]


> "%фффффф%" = это просто пример с русскими буквами, а так
> у меня стоит выч.переменная...

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

> с регистром вроде все Ок, но проверю...

where upper(code) like upper(:Code)


 
evvcom ©   (2005-08-03 14:09) [20]


> но тупой способ борьбы - написать свою

Достали меня уже подобными фразами. Тупыми способами пользуются тупые люди, если кто себя относит к ним, то пользуйтесь. А написать свою - это вовсе не тупой способ.


 
ANB ©   (2005-08-03 14:13) [21]


> evvcom ©   (03.08.05 14:09) [20]
- тогда я тупой, так как этим способом обычно и пользуюсь. Только функцию придется в фоксе писать. И таскать ее везде.
А чего ты седня злой такой ? На обед не ходил ?


 
-=snoop=- ©   (2005-08-03 14:25) [22]

ANB ©, спасибо за AnsiUpperCase
evvcom © я не умею пользоваться параметрами ибо совсем недавно пишу на дельфях


 
sniknik ©   (2005-08-03 14:34) [23]

ANB ©   (03.08.05 14:13) [21]
> Только функцию придется в фоксе писать. И таскать ее везде.
а как ты ее к ODBC/OLEDB-шному драйверу подключаеш? чтобы он ее использовал, т.е. коннекте к нему из дельфей эту функцию можно было в запросах использовать.
не в этом случае, конечно, но это можно использовать.


 
-=snoop=- ©   (2005-08-03 14:34) [24]

написал вот такой код

("insert into login.pro (code) values ("ыыы")") ;

вставил мне в таб. всяких закарюк, посмотрел кадировку таб = 866, как победить? подскажите?

P.S.
2 ANB © честно говоря тут все не пышут добролюбием....


 
ANB ©   (2005-08-03 14:35) [25]


> -=snoop=- ©   (03.08.05 14:25) [22]

Ими пользоваться намного проще, чем кавычками. И полезнее.
Вот так :
в тело запроса пихаешь имя переменной с двоеточием, примерно вот так :
Query.SQL.Text := "select * from Tbl where ID = :MyID";
Затем пихаешь в параметр значение :
Query.ParamByName("MyID").AsInteger := 5;
Выполняешь запрос :
Query.Open;
В списке свойств ParamByName("MyID"). есть еще много As..., на почти все случаи в начинающей жизни.
Удобно - тело запроса нужно менять только если приспичит. Можно его заранее препарировать, работать будет быстрее. Не надо мучится с кавычками и непечатными символами в строках.
Все имхо. И неполно. Подробнее и правильнее - в Ф1.
ЗЫ. В DOA с параметрами так не работают.


 
ANB ©   (2005-08-03 14:40) [26]


> sniknik ©   (03.08.05 14:34) [23]
- никак. Я visual foxpro triber (кажись так называлось) пользовался. Я про багу с аппер я еще в клиппере знал. Там у меня была своя функция. Споткнулся - некогда было разбираться (проект горел), сделал затычку. Кидаешь текст процедуры в рабочую папку, драйвер ее сам компиляет при использовании в запросах. Грю же - тупой способ. Может кто лучше знает ?


> -=snoop=- ©   (03.08.05 14:34) [24]
- у тебя проблема с кодировкой. Имхо - лучше не юзать фоксовские таблицы вместе с делфи. А чем смотришь ? И переделай на параметр.


 
-=snoop=- ©   (2005-08-03 14:41) [27]

хе)) поменял кодировку в таб.на 1251 и

("insert into login.pro (code) values ("ыыы")") ;

отработал нормал, только вот похерились все прежние строки написанный на русском...
встает сл.вопрос, кто нить работал с DOS кодировкой)))

2 ANB © спасиб!освою!!


 
ANB ©   (2005-08-03 14:44) [28]


> -=snoop=- ©   (03.08.05 14:41) [27]

Ты откуда их писал ? (прежние строки). Залезь в дбф честной просмотрялкой (фаром, например) и определи, в какой кодировке у тебя были старые строки, в какой стали новые. Если в разной - ты злобный Буратино и все сломал. Тогда немедленно грохни свою добавленную строку.


 
-=snoop=- ©   (2005-08-03 14:48) [29]

да я б с радостью не юзать хотяб ДОСовые таблици, но пишу под БЭСТ, поэтому деться некуда....
Смотрю? смотря что сами таблици VFP9.0 или wDBFview(http://www.gendalf.ru)


 
evvcom ©   (2005-08-03 14:50) [30]


> А чего ты седня злой такой ? На обед не ходил ?

Да нет, на обед сходил. Меня на работе достал один типа начальник фразой "Берешь и тупо копируешь". В его стиле Copy/Paste пользоваться нежели функцию написать. Вот я и сорвался немного. :)
Народ! Не употребляйте эту дурацкую фразу, она меня бесит.


 
-=snoop=- ©   (2005-08-03 15:03) [31]

чегот с параметрами не выходить

lADO2LoginPro.SQL.Text := "insert into login.pro (code) values (:lcUsrName)" ;
lADO2LoginPro.Parameters.ParamByName("lcUsrName") := "жжж" ;

а в хелпе чегот не нарылся, плохохо смотрел, день сегодня не только у evvcom © плох , у меня вон на крыше оптику разрубили))), так что я как спайдермен на 35градусной жаре на крыше лазил.........


 
evvcom ©   (2005-08-03 15:10) [32]


> день сегодня не только у evvcom © плох

Нормальный у меня день.

> чегот с параметрами не выходить

Сделай запрос в designtime, посмотри, чтобы у параметров были определены типы данных и вход/выход. ParamByName проскочит на ура. Потом уже будешь динамически генерить, если захочешь, но мое имхо, не делай так.


 
Dell3r ©   (2005-08-03 15:17) [33]

После скобки перед := поставь .AsString может потянет


 
ANB ©   (2005-08-03 15:19) [34]


> -=snoop=- ©   (03.08.05 15:03) [31]

Смотреть пример и хелп. Вдумчиво и внимательно. Я для кого про As... писал ? AsString влепи.


 
-=snoop=- ©   (2005-08-04 05:59) [35]

про As... писал, да...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.016 c
4-1122360846
Работник
2005-07-26 10:54
2005.09.18
Отключение дисков


9-1116619362
brack
2005-05-21 00:02
2005.09.18
Линия в DelphiX


3-1123051769
worldmen
2005-08-03 10:49
2005.09.18
Создание базы в FireBird.


14-1125066193
Gero
2005-08-26 18:23
2005.09.18
Правила этикета


6-1116102198
KonstantinXaker(KX)
2005-05-15 00:23
2005.09.18
Рисунок из Интернета в TImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский