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

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

Передача параметров [D7, MSSQL, dBase, FoxPro]


apl ©   (2007-03-02 09:01:00) 

Подскажите, в чем фокус.
Работаю с MSSQL Получаю через ADOQuery некоторую выборку.
Дополнительно есть таблица DBF. К нейт так же выполняю запросы через ADOQuery. Нужно поискать для каждой записи из полученного запроса в DBF таблице соответствие.

Делаю следующее для каждой записи
(запрос к DBF)
Select * fron dbftable where fam=:AFirstName and im=:AName

передаю параметры

ADOQuerydbf.Parameters[0].Value:=AdoQueryMSfam.AsString
....


И здесь возникает фигня!
AdoQueryMSfam.AsString возвращает нормальное (читаемое) значение (Например ИВАНОВ), а в ADOQuerydbf.Parameters[0].Value получаем строку в виде шестнадцатиричных символов.
Параметр запроса имеет тип Strung (в инспекторе), а Тип значения OleStr.


MsGuns   (2007-03-04 01:38:00) [1]

Как типы полей прописаны собственно в таблицах ?
string - ог только в паскале стринг (кстати, может быть также ftWideString, - там вообще с типами данных такого намутили, что ужасть), в dbf он Character, в "скале" может быть Char, VarChar..


Param   (2007-03-04 01:33:00) [2]

Может попробовать через ПарамБуНаме?

ADOQuerydbf.Parameters.ParamByName('').Value


ЮЮ   (2007-03-03 11:54:00) [3]


> А почему именно 255?


Как дань уважения паскалевкой string :)


Val   (2007-03-03 11:36:00) [4]

число красивое.


Bless   (2007-03-03 11:36:00) [5]


> ЮЮ ©
> Ega23 ©


А почему именно 255?


apl   (2007-03-02 15:26:00) [6]

Беседа двух авторитетов просто доставляет удовольствие, бесплатно и в ассортименте :)))))


Плохиш   (2007-03-02 15:20:00) [7]


> apl   (02.03.07 14:21) [13]
> AdoQueryMs: TxxxField; - к сожалению сейчас сказать не смогу,
>  т.к. это на другой работе, а там нет выхода во внешний
> мир.
> По поводу длины строк - то же
>
> ADOQuerydbf.Parameters[0].Value:=AdoQueryMSfam.Value; -
> не помогло. В обед съездил, проверил.

Хм, все остальные консультации для Вас по цене 100 Евро за пост, предоплата за 10 постов.


apl   (2007-03-02 14:21:00) [8]

AdoQueryMs: TxxxField;- к сожалению сейчас сказать не смогу, т.к. это на другой работе, а там нет выхода во внешний мир.
По поводу длины строк - то же

ADOQuerydbf.Parameters[0].Value:=AdoQueryMSfam.Value; - не помогло. В обед съездил, проверил.


Ega23   (2007-03-02 13:35:00) [9]


> Если нет строго заданной длины исходя из предметной области,
>  то если
> поле предназначено заведомо для аббревиатур, то могу ограничиться
> и 50, в остальных случаях предпочитаю не заморачиваться
> на мелочах. В первом - 10летней давности проекте - чего
> только нет и (20) и (25) и т.д. А теперь, когда мало окажется
> - и не знаешь что делать :)


Ясно. В общем, я тоже уже к этому пришёл. Пару раз пришлось кучу кода лопатить, т.к. попался чувак с какой-то совершенно жуткой составной фамилией, типа "Пескоструев-Загибаченский" (только там ещё суровее было), и не влезло оно в varchar(32)...
С тех пор тоже на "всегда 255" перешёл... :)


ЮЮ   (2007-03-02 13:10:00) [10]

Если нет строго заданной длины исходя из предметной области, то если
поле предназначено заведомо для аббревиатур, то могу ограничиться и 50, в остальных случаях предпочитаю не заморачиваться на мелочах. В первом - 10летней давности проекте - чего только нет и (20) и (25) и т.д. А теперь, когда мало окажется - и не знаешь что делать :)


Ega23   (2007-03-02 13:03:00) [11]


> Я, напрмер, предпочитаю varchar(255)


Кстати, как оффтопик:
А ты всегда строковым полям 255 даёшь? Т.е. логически не разбиваешь никогда?

З.Ы. Разницу между char(255) и varchar(255) прекрасно представляю...


ЮЮ   (2007-03-02 12:55:00) [12]

AdoQueryMs - это Name для AdoQuery (без всяких фокусов)

Безо всяких фокусов, в коде формы (в обявлении клвсса формы) есть такая строка:
AdoQueryMs: TxxxField;

Так вот этот ххх и интересует. Понятие 'строка' слишком общее для MS SQL. Тпм несколько строковах типов. Я, напрмер, предпочитаю varchar(255), а какой у твоего поля fam?


Ega23   (2007-03-02 12:30:00) [13]


> Плохиш ©   (02.03.07 11:03) [5]


Скорее всего - да.


apl   (2007-03-02 11:31:00) [14]

AdoQueryMs - это Name для AdoQuery (без всяких фокусов)
AdoQueryMsfam  = AdoQuery.FieldByName('fam')
а fam - строковый


ЮЮ   (2007-03-02 11:10:00) [15]

AdoQueryMsfam - строковый
не верю, это должен быть наследник TField !!!


Плохиш   (2007-03-02 11:03:00) [16]


> ADOQuerydbf.Parameters[0].Value:=AdoQueryMSfam. Value;


apl   (2007-03-02 10:57:00) [17]

AdoQueryMsfam - строковый Извиняюсь, в offline


Ega23   (2007-03-02 09:43:00) [18]


> Какото типа AdoQueryMSfam ?


Вот и мне интересно, какого типа.


ЮЮ   (2007-03-02 09:41:00) [19]

Ega23 ©   (02.03.07 09:08) [1]
Так что-то меняется?

А разве должно? Для персистент поля FieldByName('fam') === AdoQueryMSfam
Какото типа AdoQueryMSfam ?


Ega23   (2007-03-02 09:08:00) [20]


ADOQuerydbf.Parameters[0].Value:=AdoQueryMS.FieldByName('fam').AsString;

Так что-то меняется?


Наверх

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