Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Передача параметров   Найти похожие ветки 

 
apl   (2007-03-02 09:01) [0]

Подскажите, в чем фокус.
Работаю с 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.


 
Ega23 ©   (2007-03-02 09:08) [1]


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

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


 
ЮЮ ©   (2007-03-02 09:41) [2]

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

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


 
Ega23 ©   (2007-03-02 09:43) [3]


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


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


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

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


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


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


 
ЮЮ ©   (2007-03-02 11:10) [6]

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


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

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


 
Ega23 ©   (2007-03-02 12:30) [8]


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


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


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

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

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

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


 
Ega23 ©   (2007-03-02 13:03) [10]


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


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

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


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

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


 
Ega23 ©   (2007-03-02 13:35) [12]


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


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


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

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

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


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


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

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


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

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


 
Bless ©   (2007-03-03 11:36) [16]


> ЮЮ ©
> Ega23 ©


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


 
Val ©   (2007-03-03 11:36) [17]

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


 
ЮЮ ©   (2007-03-03 11:54) [18]


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


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


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

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

ADOQuerydbf.Parameters.ParamByName("").Value


 
MsGuns ©   (2007-03-04 01:38) [20]

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



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

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
2-1177772009
SmallEr
2007-04-28 18:53
2007.05.20
Время из секунд к "человеческому" виду.


2-1178097224
Washington
2007-05-02 13:13
2007.05.20
Windows (директория)


2-1177396233
cj
2007-04-24 10:30
2007.05.20
TreminateProcess


4-1166364120
klimov
2006-12-17 17:02
2007.05.20
Как в сервисе подождать пока чужое приложение не будет запущено?


2-1178108113
RomanLN
2007-05-02 16:15
2007.05.20
создание и редоктирование таблиц