2014-05-18 27 views
0

我有一個名爲settingsTBL的表,只有一行數據(用作可存儲設置)。在這張表中它們是公司名稱,地址等的列。在itextsharp中使用數據庫值

我使用iTextSharp從窗體上的文本框生成發票。到目前爲止,我已將所有相關的文本框文本添加到PDF文檔中,並希望在頁面底部顯示公司詳細信息,但我無法從表格中將它們轉換爲PDF文檔中的文本。

我已經創建了字符串來嘗試使用它們來生成文本。這裏是我的代碼:

{ 
    string constring = @"Data Source=|DataDirectory|\LWADataBase.sdf"; 
    string Query = "select * from settingsTBL where Reference = 1; "; 
    SqlCeConnection conDataBase = new SqlCeConnection(constring); 
    SqlCeCommand cmdDataBase = new SqlCeCommand(Query, conDataBase); 
    SqlCeDataReader myReader; 
    try { 
     conDataBase.Open(); 
     myReader = cmdDataBase.ExecuteReader(); 
     while (myReader.Read()) { 
      string sCompany = myReader.GetString(myReader.GetOrdinal("Company Name")); 
      string sAddress1 = myReader.GetString(myReader.GetOrdinal("Address Line 1")); 
      string sAddress2 = myReader.GetString(myReader.GetOrdinal("Address Line 2")); 
      string sPost = myReader.GetString(myReader.GetOrdinal("Post Code")); 
      string sTelephone = myReader.GetString(myReader.GetOrdinal("Telephone Number")); 
      string sEmail = myReader.GetString(myReader.GetOrdinal("Email Address")); 
      string sRegistration = myReader.GetString(myReader.GetOrdinal("Registration Number")); 
     } 
     //displays a system error message if a problem is found 
    } 
    catch (Exception ex) { 
     MessageBox.Show(ex.Message); 
    } 
} 
Paragraph lwa = new Paragraph("WOULD LIKE TO INSERT COMPANY DETAILS INTO HERE"); 
lwa.Alignment = Element.ALIGN_BOTTOM; 
invoice.Add(lwa); 
+1

我編輯了你的問題來格式化代碼,同時這樣做,我讀過你的代碼。但是,我認爲有些數據丟失了:您是如何填寫表格的?你在使用'AcroFields'嗎?公司的詳細信息是什麼?據我所知,你已經有了'Commpany','sAddress1','sAddress2'等等,這與*「我無法從表格中獲取它」相矛盾。另外:如果您可以添加其他信息,爲什麼要添加公司信息不同?當你嘗試添加它時發生了什麼? –

+0

另外,你正在''while'循環中聲明你的變量。循環結束時,這些變量超出範圍,不再可用。 –

+0

「填寫表格」的含義是什麼?公司詳細信息在字符串定義中詳細說明。所有其他信息來自插入到表單中的文本框文本,當用戶單擊「生成」時,它會將其插入到iTextSharp PDF中的段落中。公司信息在settingsTBL(列名:公司名稱,電話號碼等)中。 – Tom

回答

0
string constring = @"Data Source=|DataDirectory|\LWADataBase.sdf"; 
      string Query = "select * from settingsTBL where Reference = 1; "; 
      SqlCeConnection conDataBase = new SqlCeConnection(constring); 
      SqlCeCommand cmdDataBase = new SqlCeCommand(Query, conDataBase); 
      SqlCeDataReader myReader; 

       conDataBase.Open(); 
       myReader = cmdDataBase.ExecuteReader(); 

       myReader.Read(); 

        string sCompany = myReader.GetString(myReader.GetOrdinal("Company Name")); 
        string sAddress1 = myReader.GetString(myReader.GetOrdinal("Address Line 1")); 
        string sAddress2 = myReader.GetString(myReader.GetOrdinal("Address Line 2")); 
        string sPost = myReader.GetString(myReader.GetOrdinal("Post Code")); 
        string sTelephone = myReader.GetString(myReader.GetOrdinal("Telephone Number")); 
        string sEmail = myReader.GetString(myReader.GetOrdinal("Email Address")); 
        string sRegistration = myReader.GetString(myReader.GetOrdinal("Registration Number")); 










     Paragraph lwa = new Paragraph(""+sCompany+ "\n " +sAddress1+ " " + sAddress2+"\n " +sPost+"\n Email Address: " + sEmail+ "\n Telephone: " +sTelephone+ "\n " +sRegistration+""); 

     lwa.Alignment = Element.ALIGN_LEFT; 
     invoice.Add(lwa); 

卸下{}和while循環似乎很好地工作。任何進一步的建議可以隨意評論或回答。我一直在尋找更好的答案。

相關問題