Delphi 7 SQLServer 2000Impossible de récupérer plus de 8 octets à partir d'un champ de texte dans le serveur SQL via Delphi ADO
Je suis un problème avec une application héritage que je suis incapable de recompiler, parce que quand je fais je perdre la possibilité de récupérer des documents d'un champ de texte dans lequel ils sont stockés et écrire sur le disque, je ne reçois que les 8 premiers octets. J'ai une application beaucoup plus grande, mais une application vraiment simple recrée le problème.
Le code est ci-dessous. La chaîne de connexion utilisée pour se connecter est.
Provider=SQLOLEDB.1;Password=toflidium;Persist Security Info=True;User ID=sa;Initial Catalog=DocManager;Data Source=DELPHIBOX;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DELPHIBOX;Use Encryption for Data=False;Tag with column collation when possible=False
Le code entier pour le cas de test
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ADODB, DB, StdCtrls, DBCtrls;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Edit1: TEdit;
Button1: TButton;
DBText1: TDBText;
DBText2: TDBText;
DBText3: TDBText;
DataSource1: TDataSource;
ADOTable1: TADOTable;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1DocumentDataID: TAutoIncField;
ADOQuery1VersionID: TIntegerField;
ADOQuery1DocName: TStringField;
ADOQuery1ActualDoc: TMemoField;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
sql : string;
begin
sql := 'Select Top 1 * from tblDocumentData where VersionID = ' + ADOTable1.FieldByName('VersionID').asstring ;
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.Open;
TBlobField(ADOQuery1.FieldByName('ActualDoc')).SaveToFile('c:\temp\temp\myfile'
+ ADOTable1.FieldByName('VersionID').asstring + '.doc');
end;
end.
C'est l'ensemble du fichier à writen dis
ÐÏࡱá
je recevoir un 20 ensemble - mot 50K document.
J'ai reconstruit une machine entière pour voir si quelque chose avait été mal réglé sur ma machine de développement et j'ai le même problème lors de la reconstruction. si je construis simplement et que j'essaie de faire face à une base de données en direct, j'ai le même problème, mais l'ancienne version (maintenant âgée d'environ 4 ans) fonctionne bien.
Des idées?