聲明:這是一個測試/ DUMMY/FAKE DATABASE從2個表
球員嗨,我有一個問題,以下是2層的表結構。當我使用
SELECT CONVERT(char(80), InvDate,3) AS InvDate,InvoiceNo,EmployerCode,TaxAmount + SubTotal AS Amount,'' AS Payment FROM dbo.Invoice;
http://i48.tinypic.com/icpzpy.png
我希望在一列患者添加名稱由地方將被標記,以發票號碼。所以我的意思是說,當查詢被執行時,它應該顯示與發票號碼一起標記的患者詳細信息。但在這兩種表格結構中都沒有鏈接。我能想到的唯一連接「MedicalRecordID」。我試過使用UNION功能didnt給我所需的輸出。任何幫助?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MedicalDataExporter
{
public partial class frmSales : Form
{
public frmSales()
{
InitializeComponent();
}
private void dtpFrom_ValueChanged(object sender, EventArgs e)
{
}
private void btnExtract_Click(object sender, EventArgs e)
{
SqlConnection objConn = new SqlConnection("Data Source=test;Initial Catalog=test;Persist Security Info=True;User ID=test;Password=test");
System.Data.SqlClient.SqlConnection(conStr);
objConn.Open();
SqlCommand objCmd = new SqlCommand("SELECT CONVERT(char(80), InvDate,3) AS InvDate,InvoiceNo,EmployerCode,TaxAmount + SubTotal AS Amount,'' AS Payment FROM Invoice WHERE (InvDate >= CONVERT(datetime, '"+dtpFrom.Text +"', 105)) AND (InvDate <= CONVERT(datetime, '"+dtpTo.Text+"', 105))", objConn);
SqlDataReader objReader;
objReader = objCmd.ExecuteReader();
System.IO.FileStream fs = new System.IO.FileStream("C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt", System.IO.FileMode.Create);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.Default);
int count = 0;
while (objReader.Read())
{
for (int i = 0; i < 5; 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 < 4)
{
sw.Write("\t");
}
}
count = count + 1;
sw.WriteLine();
}
sw.Flush();
fs.Close();
objReader.Close();
objConn.Close();
MessageBox.Show(count + " records exported successfully.");
this.Close();
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void dtpTo_ValueChanged(object sender, EventArgs e)
{
}
private void frmSales_Load(object sender, EventArgs e)
{
}
}
}
這裏是表結構:
http://i45.tinypic.com/2cwu2j6.png
這裏是第二個表結構:
http://i45.tinypic.com/29yplvl.png
謝謝你的回覆。當我執行查詢MSSQL時,它完全是我想要的。但是,當我轉移到VB命令,它並沒有告訴我,什麼是在MSSQL中顯示。 SqlCommand objCmd = new SqlCommand(「SELECT CONVERT(char(80),i.InvDate,3)AS InvDate,i.InvoiceNo,i.EmployerCode,i.TaxAmount + i.SubTotal AS Amount,''AS付款,pd.GivenName FROM dbo.Invoice i LEFT JOIN dbo.PatientDetails pd ON(pd.MedicalRecordID = i.MedicalRecordID)WHERE(InvDate> = CONVERT(datetime,'「+ dtpFrom.Text +」',105))AND InvDate <= CONVERT(datetime,'「+ dtpTo.Text +」',105))「,objConn);' – Newbie
嗨,先生,經過6個小時的訓練後,您的編碼和幫助。它不會過濾日期和patientdetails.givenname不顯示在TXT輸出 – Newbie
我會複製/粘貼上述查詢從C#到Management Studio(複製/粘貼引號內的所有內容,而不會改變引號內的任何內容),然後添加兩個查詢前的變量聲明('DECLARE @fromDate DATETIME ='2012-10-01 00:00''和'DECLARE @toDate DATETME ='2012-10-11 00:00'')。如果查詢在Management Studio中工作,則返回到C#代碼並設置斷點並檢查兩個「SelectedDate」字段以確認它們是正確的。如果查詢在Management Studio中未產生預期的結果,那麼您需要處理查詢。 – cbranch