Здравствуйте. Помогите, измучился уже весь.
Есть TMyRec=record состоящий из полей типов integer, record, set и перечислений. Итого sizeof(TRec)=48
Вопросы в следующем:
1. Как запихнуть переменную такого типа в таблицу?
Пробовал так:
var oc:TMyRec;
with ADOQuery1 do
begin
Active:=false;
SQL.clear;
SQL.add('INSERT INTO tmpTable (col1) VALUES(:col1)');
fs:=TMemoryStream.create;
fs.WriteBuffer(oc,sizeof(oc));
parameters.parambyname('col1').loadfromStream(fs,smReadWrite);
ExecSQL;
fs.free;
end;
Сохраняет, но как выдернуть обратно
2. Какой тип данных использовать для поля таблицы(MSSQLServer2005)?
Использовал и varbinaries, ntext, varchar, но результат один и тот же
3. Как извлечь из БД данные и запихнуть её опять в переменную?
Пробовал так:
with ADOQuery1 do
begin
Active:=false;
SQL.clear;
SQL.add('select * from tmp'); --На самом деле там пока одна запись
active:=true;
GetMem(buff,sizeof(oc)+1);
ADOQuery1.Fields[0].GetData(buff,true);
fs:=TMemoryStream.create;
fs.WriteBuffer(buff,sizeof(oc));
fs.seek(0,soFromBeginning);
fs.readBuffer(oc,sizeof(oc));
fs.free;
end;