2012-07-27 56 views
1

我越來越沮喪。是的,我是一個新手,在C#和SQL服務器上2周。請在我身上輕鬆一點。這個命令應該是將InvDate,InvoiceNo,TaxAmount和SubTotal打印爲金額。它也應該從另一張名爲PatientsDetails的表中拖拽Patientdetails。兩者的關鍵是MedicalRecordID。打印時缺失列

SqlCommand objCmd = 
    new SqlCommand("SELECT CONVERT(char(80), inv.[InvDate],3) 
        AS InvDate,inv.[InvoiceNo],inv.[TaxAmount] + inv.[SubTotal] 
        AS Amount, 
        '' AS Payment 
        FROM [Invoice] inv 
        LEFT JOIN [PatientDetails] tab 
        ON inv.[MedicalRecordID] = tab.[MedicalRecordID] 
        WHERE (inv.[InvDate] >= CONVERT(datetime, '" + 
                 dtpFrom.Text + "', 105)) 
        AND (inv.[InvDate] <= CONVERT(datetime, '" + 
                dtpTo.Text + "', 105))", 
        objConn); 

這下一組命令是打印出來,因爲我希望它是。

for (int i = 0; i < 4; i++) 
{ 
    if (!objReader.IsDBNull(i)) 
    { 
     string s; 
     s = objReader.GetDataTypeName(i); 
     //MessageBox.Show(s); 
     if (objReader.GetDataTypeName(i) == "char") 
     { 
      sw.Write(objReader.GetString(i)); 
     } 
     else if (objReader.GetDataTypeName(i) == "money") 
     { 
      sw.Write(objReader.GetSqlMoney(i).ToString()); 
     } 
     else if (objReader.GetDataTypeName(i) == "nvarchar") 
     { 
      sw.Write(objReader.GetString(i)); 
     } 
    } 

    if (i < 3) 
    { 
     sw.Write("\t"); 
    } 
} 

count = count + 1; 
sw.WriteLine(); 

這是我的SQL查詢,我猜顯然是錯誤的,因爲我沒有添加一個SubTotal,但這實際上是我想要的。 InvoiceNo,InvDate,SubTotal標記給用戶。

SELECT Invoice.InvDate, 
     Invoice.InvoiceNo, 
     Invoice.TaxAmount + Invoice.SubTotal, 
     PatientDetails.GivenName 
FROM Invoice 
INNER JOIN PatientDetails 
ON (Invoice.MedicalRecordID = PatientDetails.MedicalRecordID) 

回答

1

請嘗試以下方法寫出來的結果

for (int i = 0; i < 4; i++) 
{ 
    if (!objReader.IsDBNull(i)) 
     sw.Write(objReader.GetValue(i).ToString()); 
    else 
     sw.Write("NULL"); 

    if (i < 3) 
     sw.Write("\t"); 
} 

count += 1; 
sw.WriteLine(); 

如果你還缺領域,我想如下

SqlCommand cmd = objConn.CreateCommand(); 
cmd.CommandText = @"SELECT inv.[InvDate] 
          ,inv.[InvoiceNo] 
          ,inv.[TaxAmount] + inv.[SubTotal] AS Amount 
          ,tab.GivenName 
         FROM [Invoice] inv 
          LEFT JOIN [PatientDetails] tab 
            ON inv.[MedicalRecordID] = tab.[MedicalRecordID] 
        WHERE inv.[InvDate] BETWEEN @From AND @To"; 
cmd.Parameters.AddWithValue("@From", fromDate); 
cmd.Parameters.AddWithValue("@To", toDate); 

您還可以使用WHERE inv.[InvDate] >= @From AND inv.[InvDate] <= @To,而不是寫你的查詢BETWEEN

+0

謝謝。精彩的工作! – Newbie 2012-08-02 01:39:59