Форум: "Базы";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
Вниз
Проблема вытаскиваниея информации Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.01 c