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

Вниз

Проблема вытаскиваниея информации   Найти похожие ветки 

 
passm ©   (2002-10-23 14:07) [40]

Separator © (23.10.02 13:17)> Для хранения информации подобного типа в DB2 есть CHARACTER(N) FOR BIT DATA и BDE возвращает это поле как TBytesField.
Но, если это поле преобразовать в другой строковый тип, например, CAST(T1.FIELD1 AS VARCHAR(13)), то BDE все равно возвращает его как TBytesField.
В связи с этим, попробуй проверить какое поле будет у TQuery - воспользуйся Fields Editor"ом. Если TStringField, то попробуй сделать в запросе CAST, чтобы было TBinaryField или TBytesField. Далее рассматривай TBinaryField.Value: Variant как вариантный массив с числами Byte.


 
Separator ©   (2002-10-24 06:56) [41]


> Andriano © (23.10.02 13:54)

Читай внимательно, я использую MySql базу, он алежит на другом хосте в локалке на Linux машине


 
Separator ©   (2002-10-24 07:22) [42]


> passm © (23.10.02 14:07)

В Fields типа TStringField, как мне это сделать (Cast?) Можешщь привести пример?


 
passm ©   (2002-10-24 09:54) [43]

Separator © (24.10.02 07:22)>Например:
Query1.SQL.Text:=
"SELECT CAST(Q1.FIELD1 AS BLOB(18)) AS FIELD1
FROM TABLE1 AS Q1
WHERE Q1.ID = :TABLE1_ID"

Далее при открытии запроса BLOB воспринимается как Binary и можно работать как с вариантным массивом.
P.S. Но это для DB2 - для MySQL испытать нет возможности :\


 
Separator ©   (2002-10-24 11:44) [44]

В общем получилосьЮ но немного по другому. Я сформировал вот какой запрос:
"select ascii(substring(Par1,1,1)), ascii(substring(Par1,2,1)), ascii(substring(Par1,3,1)), ascii(substring(Par1,4,1)), ascii(substring(Par1,5,1)), ascii(substring(Par1,6,1)), ascii(substring(Par1,7,1)), ascii(substring(Par1,8,1)), ascii(substring(Par1,9,1)), ascii(substring(Par1,10,1)), ascii(substring(Par1,11,1)), ascii(substring(Par1,12,1)), ascii(substring(Par1,13,1)), ascii(substring(Par1,14,1)), ascii(substring(Par1,15,1)), ascii(substring(Par1,16,1)), ascii(substring(Par1,17,1)), ascii(substring(Par1,18,1)) from ArcRecv1 where NZap=1"
Результат достигнут, но вот скорость пострадает и больше памяти требуется


 
passm ©   (2002-10-24 12:04) [45]

Separator © (24.10.02 11:44)> А попробуй воспользоваться TField.GetData(Buffer: Pointer): Boolean.
...
const
DSize = 18;
type
TDataArray = array[0..Dsize - 1] of Byte;
PDataArray = ^TDataArray;
var
P: PDataArray;
begin
New(P);
Query1FIELD1.GetData(P);
...
Dispose(P)
end;


 
Separator ©   (2002-10-24 12:39) [46]

Огромное спасибо работает, хотя и раньше пытался использовать этот метод, но постоянно какие-то ошибки вылетали.
В общем получилось, даже не использую массив, сразу накладываю всю структуру:

type
PPar= ^TPar;
TPar= packed record
flgTS: byte;
Ckv: single;
Vmin: single;
Vkv: byte;
TimeRecv: cardinal;
TimeUpd: cardinal
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Par: PPar;
St: string;
begin
New(Par);

ZMySqlQuery1.Sql.Text:= "select Par1 from ArcRecv1 where NZap=1";
ZMySqlDatabase1.Connect;
ZMySqlQuery1.Open;
ZMySqlQuery1.Fields.Fields[0].GetData(Par);

Memo1.Lines.Clear;
Memo1.Lines.Add("flgTS: "+IntToStr(Par^.flgTS));
Memo1.Lines.Add("Ckv: "+FloatToStr(Par^.Ckv));
Memo1.Lines.Add("Vmin: "+FloatToStr(Par^.Vmin));
Memo1.Lines.Add("Vkv: "+IntToStr(Par^.Vkv));
Memo1.Lines.Add("TimeRecv: "+IntToStr(Par^.TimeRecv));
Memo1.Lines.Add("TimeUpd: "+IntToStr(Par^.TimeUpd));

Dispose(Par);

ZMySqlQuery1.Close;
ZMySqlDatabase1.Disconnect;
end;



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

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

Наверх




Память: 0.55 MB
Время: 0.024 c
14-46054
Zubr
2002-10-28 16:21
2002.11.14
Помогите найти два реферата


1-45984
Gadfly
2002-11-03 14:09
2002.11.14
Change cursor


1-45897
UNI_DeMoN
2002-11-06 02:33
2002.11.14
ОООЧЕнь нужны алгоритмы для разбора предложения на предикаты


3-45790
Nick-From
2002-10-22 17:09
2002.11.14
Изменение значений DBEdit и DBCheckBox


1-45921
¤NoNaMe¤
2002-11-04 00:39
2002.11.14
Darg&Drop текста ?