2016-06-21 14 views
-2

次のようにして、pdfファイルをMS Accessデータベースに保存することができました。しかし、私は、[OK]をBLOBフィールドにファイルを格納考え出しているように見える戻ってそれを読み、ファイルDelphi 6. MS AccessからPDFデータを読み込むにはどうすればいいですか

procedure TForm1.btnTask3Click(Sender: TObject); 
var 
    SL, splitString: TStringList; 
    i: Integer; 
    sourceFile, 
    sourceFile1, 
    outputFile : string; 
    firstName, 
    lastName, 
    userId : string; 
    dateOfBirth : TDate; 
    dbConnectionStrPath : string; 
begin 
    //set database connection string 
    dbConnectionStrPath := 'Provider=Microsoft.Jet.OLEDB.4.0;'+ 
      'Data Source='+GetCurrentDir+'\task3.mdb;'+ 
      'Persist Security Info=False'; 

    SL := TStringList.Create; 
    try 
    //Assign input and output paths 
    sourceFile := GetCurrentDir + '\source.txt'; 
    sourceFile1 := 'C:\Program Files\NetBeans 8.1\nb\shortcuts.pdf'; 
    outputFile := GetCurrentDir + '\output.txt'; 

    //Load the file into the stringlist 
    SL.LoadFromFile(sourcefile); 
    // For holding indivisual lines 
    splitString := TStringList.Create; 

    //Database stuff 
    //Set the connection string, table to save to and activate 
    ADOTable.ConnectionString := dbConnectionStrPath; 
    ADOTable.TableName := 'Patient'; 
    ADOTable.Active := True; 

    splitString.Delimiter := ','; 
    for i := 0 to SL.Count - 1 do 
    begin 

     // Split the line by the comma 
     splitString.DelimitedText := SL[i]; 

     //Assign each comma separeted value to a variable 
     firstName := splitString[0]; 
     lastName := splitString[1]; 
     userId  := splitString[2]; 
     dateOfBirth := StrToDate(splitString[3]); 

     //Assign values to the database table 
     ADOTable.Append; 
     ADOTable['UserId'] := userId; 
     ADOTable['firstname'] := firstName; 
     ADOTable['lastname'] := lastName; 
     ADOTable['DOB']  := dateOfBirth; 
     //Reference: http://stackoverflow.com/questions/4974259/access-2007-add-file-as-attachment-with-delphi 
     TBlobField(ADOTable.FieldByName('File')).LoadFromFile(sourceFile1); 

     //Save the data 
     ADOTable.Post; 

    end; 
    splitString.Free; 

    ShowMessage('Data saved to database'); 
    finally 
    SL.Free; 
    end; 
end; 

答えて

2

まあとして保存する方法が分からないので、私は(概念的な)ものを全くわからないんだけど問題はあなたが既にそこにある方法の90%であるので、ファイルを再度抽出することにあります。

明らか

TBlobField.SaveToFile()

のオンラインヘルプを読んで、あなたはそのルーチンを使用する前に、あなたが抽出したいブロブを含むレコードにごAdoTableをナビゲートする必要があります。

これはあなたが試してみるべきことです。あなたが立ち往生した場合、新しいqを尋ねてください。

Btw、あなたのqにはどのようなPDFタグがありますか?コードはテキストファイルで動作します。

+0

これはあなたの質問に答えたのですか、それともあなたはまだ立ち往生していますか? – MartynA

関連する問題