2013-04-16 65 views
0

使用Delphi 7和SQL Server 2005我嘗試將多行參數(Stringlist.text)傳遞給TAdoQuery插入腳本。 插入是成功的,但是當我從外地收回數據,我把Delphi7中的多行參數TAdoQuery

Line 1 Line 2 Line 3 

代替

Line 1 
Line 2 
Line 3 

在表中的字段類型數據類型爲nvarchar(MAX)和我不能改變它到任何其他類型,表不是我的。我試圖將參數類型從寬度改爲ftMemo,但沒有任何變化。 有什麼想法?

var 
    QRDestLicenze: TADOQuery; 
    LsLic := TStringList; 

begin 
    LsLic := TStringList.Create; 
    LsLic.Add('Line 1'); 
    LsLic.Add('Line 2'); 
    LsLic.Add('Line 3'); 
    QRDestLic.Parameters.FindParam('FieldName).Value := LsLic.Text; 
    QRDestLic.ExecSQL; 
end; 
+0

如何從數據庫行中獲取值? – Rob

回答

0

我創建了一個演示究竟做同樣的事情,雖然採用Delphi 6和SQL Server 2008

Memo1.Lines.Clear; 
    Memo1.Lines.Add('Line 1'); 
    Memo1.Lines.Add('Line 2'); 
    Memo1.Lines.Add('Line 3'); 

    ADOQuery1.SQL.Text := 'INSERT INTO Absences '+ 
    '(Employee, Date_from, Notes) '+ 
    'VALUES (99999, ''16/04/2013'', :sNotes)'; 
    ADOQuery1.Parameters.ParamValues['sNotes'] := Memo1.Lines.Text; 
    ADOQuery1.ExecSQL; 

    ADOQuery1.SQL.Text := 'SELECT Notes FROM Absences '+ 
    'WHERE Employee = 99999'; 
    ADOQuery1.Open; 
    Memo2.Lines.Text := ADOQuery1.FieldByName('Absence_notes').AsString; 

這和預期一樣,呈現出:

Line 1 
Line 2 
Line 3 
兩個備忘錄

「註釋」字段的類型爲VARCHAR(Max)。

我離開參數類型爲默認(ftString),並在TADOConnection或TADOQuery改變任何其它缺省設置。

我採用「Microsoft OLE DB提供程序SQL Server」作爲ADO數據鏈路提供。

難道還有別的東西,我們也許可以嘗試重現您的問題?

+0

謝謝你的努力:我會嘗試使用ADOQuery1.Parameters.ParamValues [「字段名」]而不是QRDestLic.Parameters.FindParam(「字段名).value的。它可能不同。 –