banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript)  XML
  [Question]   làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 18/06/2007 23:25:52 (+0700) | #1 | 65466
daicaducne
Member

[Minus]    0    [Plus]
Joined: 15/03/2007 19:28:05
Messages: 32
Offline
[Profile] [PM]
Chào mấy anh em Thắc mắc để làm sao để dữ liệu xuất ra ko được trùng nhau
Ví dụ:
Mình làm 1 List ca sĩ rồi.Sau khi ấn vào tên casi thì nó sẽ hiện ra bài hát.nhưng mà khi nhập dữ liệu vào thì nhập link bài hat,tên bài hat,tên casi.tất cả đều 1 recordset nhưng khi xuất ra thì có quá nhiều tên casi trùng nhau với số Lượng tên casi bằng với số lượng tên bài hát.
Vậy làm sao để tất cả tên casi trùng nhau thì nó chỉ xuất ra 1 tên casi thôi.
mình thử dùng select distinct ma` ko được.bạn àno có ý tưởng thì giúp mình nhé smilie-))
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 19/06/2007 12:26:26 (+0700) | #2 | 65606
soccon
Member

[Minus]    0    [Plus]
Joined: 23/10/2005 17:18:03
Messages: 28
Offline
[Profile] [PM]
Theo ý hiểu của tôi thì hiện bạn đang chỉ sử dụng một bảng để chứa các trường TENCASI; TENBAIHAT; LINK. Nếu bạn làm như vậy thì sẽ rất khó khăn trong việc Select lấy dữ liệu, đó là chưa kể đến việc CSDL sẽ bị lãng phí.

Bạn nên tạo 2 bảng

Bảng 1: đặt tên là bảng tblCaSi chẳng hạn, trong đó có các trường
CS_ID (key); CS_Name(nvarchar)

Bảng 2: đặt tên là bảng tblBaiHat chẳng hạn, trong đó có các trường
BH_ID (key); BH_CaSiId (FK); BH_Name (nvarchar); BH_Link (nvarchar)

Sau đó bạn hoàn toàn có thể Select 2 bảng này để lấy dữ liệu ra với tiêu chí là 1 ca sĩ có thể có nhiều bài hát.

Không hiểu những ý tưởng trên có đúng với những gì bạn cần không? Nếu không phải thì bạn hãy nói rõ hơn ý muốn của mình để mọi người hiểu hơn.

Chúc bạn sớm thành công
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 19/06/2007 23:18:19 (+0700) | #3 | 65662
daicaducne
Member

[Minus]    0    [Plus]
Joined: 15/03/2007 19:28:05
Messages: 32
Offline
[Profile] [PM]
thanks bạn nhìu lắm nhưng mà mình ko bít cách select từ 2 bảng .nhưng mà select từ 2 bảng thì đâu có chung record set đâu mà lấy thông tin từ table nhac khi nhấp vào tên casi của table casi bạn chỉ mình cách select đi thanks smilie-))
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 20/06/2007 13:54:06 (+0700) | #4 | 65815
soccon
Member

[Minus]    0    [Plus]
Joined: 23/10/2005 17:18:03
Messages: 28
Offline
[Profile] [PM]
Nếu bạn chỉ cần lấy tất cả các bài hát của chỉ 1 ca sĩ thôi thì điều này tương đối đơn giản. Ví dụ trên bảng tblCasi bạn có các record sau
CS_ID CS_Name
1 A
2 B
... ...
với A, B là tên ca sĩ

Và trên bảng tblBaiHat bạn có các record sau
BH_ID BH_CasiId BH_Name BH_Link
1 1 xyz xyz123
2 1 abc abc123
3 2 lmn lmn123

Nếu bạn đã từng học qua CSDL thì bạn sẽ hiểu rằng BH_CasiId là khóa ngoại, nó có quan hệ many - one với trường CS_ID của bảng tblCasi. Khi đó bạn có thể sử dụng câu truy vấn như sau

SQLtext = "SELECT * FROM tblCasi, tblBaiHat where BH_CaSiId = CS_ID AND CS_ID = " & intCaSiId

bạn sử dụng câu lệnh này thì bạn phải truyền qua query id của ca sĩ mà bạn đã chọn.


Để cụ thể hơn, bạn có thể tham khảo đoạn code dưới đây

Ở đoạn code này tôi sử dụng ví dụ CSDL trên dưới tên file là db1.mdb

* FILE1: listCasi.asp
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> Ten ca si</td>
<td> Xem bai hat</td>
</tr>
<%
Dim objSelectCaSi, oConn
Dim SQLtext, strFilePath, DuongDan

Set oConn = Server.CreateObject("ADODB.Connection")
strFilePath = Server.MapPath("db1.mdb")
DuongDan = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &strFilePath
oConn.Open DuongDan
dataConnect = oConn
oConn.close
set oConn = nothing


Set objSelectCaSi = CreateObject("ADODB.RecordSet")
SQLtext = "Select * From tblCasi Order By CS_Name"
objSelectCaSi.Open SQLtext, dataConnect, 3, 3
While NOT objSelectCaSi.EOF
%>
<tr>
<td> <%=objSelectCaSi("CS_Name")%></td>
<td> 
<a href="listBaiHat.asp?casiId=<%=objSelectCaSi("CS_ID")%>">
Xem bai hat</a></td>
</tr>
<%
objSelectCaSi.MoveNext
Wend
objSelectCaSi.Close
Set objSelectCaSi = Nothing
%>
</table>


* FILE2: listBaiHat.asp
<%
Dim objSelectBaiHat, oConn
Dim DuongDan, strFilePath, dataConnect

Set oConn = Server.CreateObject("ADODB.Connection")
strFilePath = Server.MapPath("db1.mdb")
DuongDan = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &strFilePath
oConn.Open DuongDan
dataConnect = oConn
oConn.close
set oConn = nothing

Dim intCasiId
intCasiId = 0
If Request.QueryString("casiId") <> "" Then intCasiId = Request.QueryString("casiId")
intCasiId = Cint(intCasiId) ' Tranh truong hop nguoi su dung thay doi tham so truyen vao la mot gia tri khong phai la number

%>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<%
Set objSelectBaiHat = CreateObject("ADODB.Recordset")
SQLtext = "Select * From tblCasi, tblBaiHat Where BH_CasiId = CS_ID AND CS_ID = " &intCasiId
objSelectBaiHat.Open SQLtext, dataConnect, 3, 3
IF NOT objSelectBaiHat.EOF OR NOT objSelectBaiHat.BOF Then
%>
<tr>
<td colspan="2"> Cac bai hat cua ca si <%=objSelectBaiHat("CS_Name")%></td>
</tr>
<%While NOT objSelectBaiHat.EOF%>
<tr>
<td> Ten bai hat</td>
<td> Link</td>
</tr>
<tr>
<td> <%=objSelectBaiHat("BH_Name")%></td>
<td> <%=objSelectBaiHat("BH_Link")%></td>
</tr>
<%
objSelectBaiHat.MoveNext
Wend
%>
<%
End IF
objSelectBaiHat.Close
Set objSelectBaiHat = Nothing
%>
</table>


Trên đây là 2 file mà tôi nghĩ là có thể thể hiển được ý tưởng của bạn. Nếu bạn cần một danh sách các bài hát của tất cả các ca sĩ thì bạn có thể ghép 2 file trên lại cho lồng vào nhau. Nhưng đó là một ý tưởng không hay vì như vậy danh sách sẽ rất dài.
Chúc bạn sớm thành công
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 21/06/2007 05:49:16 (+0700) | #5 | 65939
daicaducne
Member

[Minus]    0    [Plus]
Joined: 15/03/2007 19:28:05
Messages: 32
Offline
[Profile] [PM]
bạn thử sửa dùm mình cái này coai mình sửa cái selec 1 bảng thành select 2 bảng mà ko được bạn thử giúp mình nhé thanks nếu thấy rối mắt thì del hết java đi để asp là mình hiểu rồi :wink:
http://boybuon.nghiepdu.com/gaiviet/Music.zip
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 23/06/2007 00:06:40 (+0700) | #6 | 66285
daicaducne
Member

[Minus]    0    [Plus]
Joined: 15/03/2007 19:28:05
Messages: 32
Offline
[Profile] [PM]
bạn ơi sao mấy ngày nay ko thấy lên vậy sửa dùm mình được ko smilie-))
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 23/06/2007 06:18:52 (+0700) | #7 | 66362
soccon
Member

[Minus]    0    [Plus]
Joined: 23/10/2005 17:18:03
Messages: 28
Offline
[Profile] [PM]

daicaducne wrote:
bạn ơi sao mấy ngày nay ko thấy lên vậy sửa dùm mình được ko smilie-))  


Mình hơi bận nên ít có thời gian online được, bạn để lại địa chỉ email cho mình, mình sẽ gửi bộ source đã chỉnh sửa lại cho bạn.
[Up] [Print Copy]
  [Question]   Re: làm sao dữ liệu xuất ra ko được trùng nhau(ASP VBScript) 23/06/2007 09:00:27 (+0700) | #8 | 66377
daicaducne
Member

[Minus]    0    [Plus]
Joined: 15/03/2007 19:28:05
Messages: 32
Offline
[Profile] [PM]
boy_cui_bap_tien_sinh@yahoo.com
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|