2016-06-21 2 views
-2

Ich habe es geschafft, die PDF-Datei auf eine MS Access-Datenbank wie folgt zu speichern. Aber ich habe keine Ahnung, wie es wieder zu lesen und als Datei speichernDelphi 6. Wie lese ich pdf-Daten zurück von MS Access

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; 

Antwort

2

Nun, Sie scheinen eine Datei in ein BLOB-Feld haben heraus Speichern ok, also bin ich nicht ganz sicher, was (konzeptionelle) Problem, das Sie mit dem Extrahieren der Datei wieder haben, weil Sie 90% des Weges bereits dort sind.

der Online-Hilfe lesen für

TBlobField.SaveToFile()

Offensichtlich, bevor Sie diese Routine verwenden können, müssen Sie Ihre AdoTable auf den Datensatz mit dem Blob entnehmende navigieren. Sie könnten etwas tun wie

if AdoTable.Locate('LastName;FirstName', VarArrayOf(['Doe', 'John']), []) then begin 
    // Save your blob to disk here. 
end; 

Das ist, was Sie versuchen sollten. Dann frage ein neues q wenn/wenn du nicht weiterkommst.

Btw, was hat das PDF-Tag mit Ihrem q zu tun? Ihr Code arbeitet mit Textdateien.

+0

Hat dies Ihre Frage beantwortet oder sind Sie immer noch fest? – MartynA