2012-07-27 2 views
1

나는 꽤 좌절하고 있습니다. 네, C# 및 SQL 서버에서 2 주 된 새내기입니다. 제발 쉽게가주세요. 이 명령은 InvDate, InvoiceNo, TaxAmount 및 SubTotal을 Amount로 인쇄합니다. 또한 PatientDetails라는 다른 테이블에서 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

여전히 필드를 누락하는 경우 당신은 또한 대신 WHERE inv.[InvDate] >= @From AND inv.[InvDate] <= @To을 사용할 수 있습니다

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); 

을 다음과 같이, 당신의 쿼리를 작성합니다 결과

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(); 

을 작성하려면 다음을 시도하십시오 BETWEEN

+0

감사합니다. 훌륭하게 작동합니다! – Newbie

관련 문제