2013-02-26 44 views
0

我有以下3个表:Visual Studio创建一个查询连接2个或3台

customer (cid,cname,bid) 
booking (bid,bdate,btime,billamt) 
bill  (billdate,billamt,billid,cid,bid) 

我想在Visual Basic窗体的文本框分别查看cname,bdate,btime,billdate and billamt。 请帮我创建查询。以及如何使用查询将值复制到表单中的相应文本框。

+1

Hi @Kiaara,欢迎来到Stackoverflow。你花了几分钟阅读FAQ?现在就做,你也会得到一个徽章。然后回来,确定你问的是正确的。检查这个[metaSO问题](http://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question)和[Jon Skeet:Coding Blog](http://msmvps.com/ blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx)如何撰写和提出一个好问题。 – Yaroslav 2013-02-26 11:22:35

+1

谢谢yaroslav – kiaara 2013-02-26 11:24:12

+1

请同时了解VBA与VB.NET不同...请阅读每个标签或语言以了解您需要哪种语言的编程帮助..正确标记您的问题以获得关注很重要谁可以帮助你。 – bonCodigo 2013-02-26 11:25:27

回答

0

以下是使用JOINs连接您的表的SQL查询的开始。您必须尝试使用​​填充通过SQL进行表单控件以更好地理解您正在执行的操作。如果你再次被卡住,你可以在这里发表问题。

SELECT C.cname,BO.bdate,BO.btime, BL.billdate, BL.billamt 
FROM Customer 
INNER JOIN Bill 
ON C.cid = BL.cid 
INNER JOIN Booking 
BL.bid = BO.bid 
WHERE = ? -- specify proper conditions as you desire 

因此,如果您使用数据绑定,就可以使用DataTableDataGridView其中TextBox一并约束。 这是一个示例代码片段。

`DataGridView1.DataSource = DataTable1 
`TextBox2.DataBindings.Add("Text", DataTable1, "Column2") 

如果使用BindingSource,这里是你如何能过滤掉。我喜欢做从SQL表客户的fullfetch到DataTable然后(过滤器)使用放慢参数内查询(例如你的情况cid

//assuming TextBox1 has cid (customer ID) 
customersBindingSource.Filter = "cid ='" + TextBox1.Text + "'"; 

参考文献:

  • 如何填充表单控件:文本框,列表框等使用VB.NET SQL
  • 请阅读有关数据绑定
  • 除了BindingSource
+0

我了解了datagridview,但所有客户的所有细节都会显示出来。而我想查看的是基于客户ID的仅有1位客户的加入详细信息。 – kiaara 2013-02-26 11:31:20

+0

通过'cid'将'cid'作为参数发送到'WHERE'子句或过滤'datagridview' – bonCodigo 2013-02-26 11:35:59