![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметров [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;
Так что-то меняется?