Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ODAC и Oracle, парметр - строка 
:(
    Опции темы
CTapMex
Дата 3.1.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Добрый день.
столкнулся тут с проблемой взаимодействия ODAC и Oracle.
исходные  - odac 6.25 , oracle 9 , delphi 7 или 2007 (одинаково работает)
добавляю на форму компонент TOraQuery - QcolVek. sql запрос 

Код

select count(*) as cvi from veksels where veksel_number=:num

num это строка .
далее делаю следующее

Код

DMmain.QcolVek.ParamByName('num').Value:='КТ-800-2000825-К';
DMmain.QcolVek.Open;
form1.Caption:=DMmain.QcolVek.FieldByName('cvi').Value;


в идеале form1.Caption должен стать '1', но он равен '0'.
тогда делаю по другому
Код

DMmain.QcolVek.SQL.Clear;
DMmain.QcolVek.SQL.Add('select count(*) as cvi from veksels where veksel_number='+chr(39)+tempVarArray[lb1+i,lb2+1]+chr(39));
DMmain.QcolVek.open;
form1.Caption:=DMmain.QcolVek.FieldByName('cvi').Value;


tempVarArray[lb1+i,lb2+1] в данном случае как раз равна 'КТ-800-2000825-К'.
после запуска выдает верный ответ '1'. 
Что не так делаю? в чем проблема?
PM MAIL   Вверх
Vas
Дата 3.1.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Попробуй так:
Код

DMmain.QcolVek.Params.ParamByName('num').AsString:='КТ-800-2000825-К';
DMmain.QcolVek.Open;
form1.Caption:=DMmain.QcolVek.FieldByName('cvi').Value;



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
CTapMex
Дата 4.1.2008, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Vas  - нет это не работает
но я разобрался. 
решение такое DMmain.QcolVek.Params.ParamByName('num').AsString:='КТ-800-2000825-К'+'%';
select count(*) as cvi from veksels where veksel_number like :num
PM MAIL   Вверх
Vas
Дата 4.1.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(CTapMex @  4.1.2008,  00:57 Найти цитируемый пост)
решение такое DMmain.QcolVek.Params.ParamByName('num').AsString:='КТ-800-2000825-К'+'%';
select count(*) as cvi from veksels where veksel_number like :num 

Значит у тебя в поле таблицы не такое значение, а что-то еще дописано там, может даже просто пробелы. в моем варианте все работает если значение параметра полностью совпадает со значениями поля. 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
CTapMex
Дата 4.1.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



счас проверил - строка без пробелов, без лишних символов.
да и кстати в sql navigator запрос
Код

select count(*) as cvi from veksels where veksel_number='КТ-800-2000825-К' 

выдает верный ответ 1.
а может быть дело в том что VEKSEL_NUMBER  имеет тип CHAR(30) ?

еще кстати интересено. свойство debug, установленное в true , срабатывпет только при открытии проекта. а когда запускаешь программу окно не появляется.
PM MAIL   Вверх
Vas
Дата 4.1.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(CTapMex @  4.1.2008,  11:21 Найти цитируемый пост)
а может быть дело в том что VEKSEL_NUMBER  имеет тип CHAR(30) 

Скорее всего в оракле обычно для таких строк используют Varchar или varchar2. Char рекомендуется использовать для строк из одного символа. Поставь точку останова на нужной строке и все тебе появится smile


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
CTapMex
Дата 4.1.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



почитал на сиквелру и попробовал использовать trim. помогло.
потом прочитал твой ответ и нашел вот такую цитатку
Цитата

Особенности строковых типов данных
Давайте сначала повторим описание этих типов данных из документации (Data Definition Guide): 
CHAR(n) - n символов, от 1 до 32767, строковый тип фиксированной длины. Если содержимое поля меньше указанного размера, то оно "выравнивается" (добивается) дополнительными пробелами.
VARCHAR(n) - n символов, от 1 до 32767, строковый тип переменной длины. Пробелы в конце содержимого поля игнорируются.

так что тип данных играет не малую роль
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.