Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не отрабатывается селект к базе(( [D7, dBase, FoxPro]


Страницы:   1 2

-=snoop=- ©   (2005-08-03 09:26:00) 

привет всем, кака-то проблема дурацкая(), есть база *.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, подскажите, как решить трабл??


-=snoop=-   (2005-08-04 05:59:00) [1]

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


ANB   (2005-08-03 15:19:00) [2]


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

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


Dell3r   (2005-08-03 15:17:00) [3]

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


evvcom   (2005-08-03 15:10:00) [4]


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

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

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

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


-=snoop=-   (2005-08-03 15:03:00) [5]

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

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

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


evvcom   (2005-08-03 14:50:00) [6]


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

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


-=snoop=-   (2005-08-03 14:48:00) [7]

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


ANB   (2005-08-03 14:44:00) [8]


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

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


-=snoop=-   (2005-08-03 14:41:00) [9]

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

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

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

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


ANB   (2005-08-03 14:40:00) [10]


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


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


ANB   (2005-08-03 14:35:00) [11]


> -=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 с параметрами так не работают.


-=snoop=-   (2005-08-03 14:34:00) [12]

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

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

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

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


sniknik   (2005-08-03 14:34:00) [13]

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


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

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


ANB   (2005-08-03 14:13:00) [15]


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


evvcom   (2005-08-03 14:09:00) [16]


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

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


ANB   (2005-08-03 14:05:00) [17]

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


evvcom   (2005-08-03 14:05:00) [18]


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

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

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

where upper(code) like upper(:Code)


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

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

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)) ;

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

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


-=snoop=-   (2005-08-03 13:17:00) [20]

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

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо