sql中用什么格式存取ole 数据

解决方案 »

  1.   

    转载:
    Delphi环境下的BLOB使用  实现文字材料的数据库管理时,经常会遇到特殊字符的输入和显示问题,如在档案管理中,档案文件名中经常会出现类似于 C3I 这样的上下标形式或其它特殊形式和字符,虽然特殊字符部分可以在编辑控件中显示或浏览,但大多数格式字符如上下标、根号等的显示是不允许的,因此可以利用BLOB字段解决特殊字符输入和显示问题。下面以PARADOX数据库环境为例简单介绍在Delphi环境下的BLOB使用方法。  首先考虑到BLOB字段的性质是不可能直接进行显示的,即不能用类型转化之类的方法,但作为数据集字段可以调用诸如LOADFROMFILE或SAVETOFILE之类的函数,这与OLE控件的方法完全类似,因此可以在原文件表中建立一个新的字段,其类型为BLOB,并为此字段生成一个显示的全局变量。  (1)录入  首先完成OLE控件的编辑工作,按下录入按钮后将其内容保存到当前记录的NEW字段中,由于目前是处理编辑状态,所以标识当前字段的批示符为“I”。其实现方法是先利用SaveToFile将OLE控件中内容保存在临时文件TEMPOLE.NNN中,再将此文件内容调入到表中的NEW字段中(即BLOB字段),在调入前必须保证表处理为可编辑状态。  procedure TForm1.Button1Click(Sender: TObject);  //录入按钮的响应事件  begin   ole1.SaveToFile('tempole.nnn');  //保存OLE控件中内容到临时文件中   table1.edit; //设置表的编辑状态   table1new.LoadFromFile('tempole.nnn');  //调整表中NEW字段的内容为临时文件的内容  DBGrid1.Fields[5].AsString:='1';  //调整表中特殊标志字段的内容为1  end;  (2)显示  下面的事件处理是将当前记录的NEW字段内容读出到OLE控件中,以便用户查看。按下显示按钮的作用就是将当前记录对应的特殊文件名在下面的OLE控件中进行显示。  procedure TForm1.Button2Click(Sender: TObject);  begin  if DBGrid1.Fields[5].AsString='1' then  //若含特殊字符  begin   table1new.SaveToFile('tempole.nnn');  //将表NEW字段的内容保存为临时文件   ole1.LoadFromFile('tempole.nnn');  //将OLE控件的内容调整为临时文件内容   end;  end;
      

  2.   

    (3)浏览  实际上浏览的实现所采用的方法就是前面的录入和显示方法。  在以上方法基础上就可以方便地实现带特殊字符的表格式浏览了。这里用到了动态创建OleContainer方法,并根据是否有特殊字符将内容调入。  procedure TForm1.Button3Click(Sender: TObject);  var  temp:Array[1..100]of TOleContainer;  i:integer;  begin   showole:=not showole;  //是否浏览   table1.First;   i:=0;   while not table1.eof do   begin   i:=i+1;   if showole=true then   begin   temp[i]:=TOleContainer.Create(self);  //动态创建OLE控件   temp[i].parent:=form1;   temp[i].width:=200;  //设置每个动态生成的OLE控件的大小、位置   temp[i].height:=25;   temp[i].left:=DBGrid1.Left-200;   temp[i].top:=temp[i].Height*(i-1)+DBGrid1.Top+20;   if(table1ole.AsString='1') then //若含特殊字符   begin   table1new.SaveToFile('tempole.nnn');//取字段内容,保存为临时文件   temp[i].LoadFromFile('tempole.nnn');  //将内容调入到动态生成的OLE控件中   end   end   else //取消浏览   temp[i].visible:=false;  //撤消动态生成的OLE控件的显示状态   table1.Next;   end;  end;  这里只利用按钮方式切换浏览状态,要求在浏览和取消浏览操作之间不要有其它操作,但在实际应用中我们是利用多页面的切换自动完成浏览状态的切换的。  (4)补充  在以上的作法中,需要声明一个table1new变量,即根据表中的NEW字段(BLOB类型)所声明的一个长久变量table1new:TblobField,在查询中不可能提前定义好所有可能的字段变量,因此可以用强制类型的方法实现。假设存在查询控件query1和OLE控件filename2,则显示时可以采用以下语句:  with query1.fields.FieldByName('NEW') as TBlobField do savetofile('tempole.nnn');  form1.filename2.LoadFromFile('tempole.nnn');