各位大蝦和版主,有個不明白的問題,希望各位幫忙,謝謝,在線等!!!!!!!!!

baibai520 2006-03-20 09:51:58
我現在有這樣一個DataTable

姓名 學號 性別
張三 001 男
李四 002 男
張艷 003 女
王一 004 男
王二 005 男
王艷 006 女

我現在需要做成這樣一個DataTable

姓名 學號 性別 姓名 學號 性別 姓名 學號 性別
張三 001 男 李四 002 男 張艷 003 女
王一 004 男 王二 005 男 王艷 006 女
我現在這樣寫了代碼

Dim name_1 As New DataColumn
Dim num_1 As New DataColumn
Dim sex_1 As New DataColumn
Dim name_2 As New DataColumn
Dim num_2 As New DataColumn
Dim sex_2 As New DataColumn

ldtb_temp.Columns.Add(name_1)
ldtb_temp.Columns.Add(num_1)
ldtb_temp.Columns.Add(sex_1)
ldtb_temp.Columns.Add(name_2)
ldtb_temp.Columns.Add(num_2)
ldtb_temp.Columns.Add(sex_2)

''ldtb_temp是我的DataTable
Dim ldrw_temp As DataRow
Dim lint_row As Integer

For lint_row = 0 To ldtb_temp.Rows.Count - 1
If lint_row < ldtb_temp.Rows.Count - 1 Then
ldtb_temp.Rows(lint_row)("name_1") = ldtb_temp.Rows(lint_row + 1)("name")
ldtb_temp.Rows(lint_row)("num_1") = ldtb_temp.Rows(lint_row + 1)("num")
ldtb_temp.Rows(lint_row)("sex_1") = ldtb_temp.Rows(lint_row + 1)("sex")
ldtb_temp.Rows(lint_row)("name_2") = ldtb_temp.Rows(lint_row + 2)("name")
ldtb_temp.Rows(lint_row)("num_2") = ldtb_temp.Rows(lint_row + 2)("num")
ldtb_temp.Rows(lint_row)("sex_2") = ldtb_temp.Rows(lint_row + 2)("sex")
ldtb_temp.Rows(lint_row + 1).Delete()
ldtb_temp.Rows(lint_row + 2).Delete()
End If
Next

我這樣做了以後結果我的DataTable變成這樣的效果了,實在想不明白是怎麼回事
姓名 學號 性別 姓名 學號 性別 姓名 學號 性別
張三 001 男 李四 002 男 張艷 003 女
張艷 003 女 王二 005 男 王艷 006 女
就是在等二桁數據哪裡應該是顯示原來表的第四桁數據的,但是現在確是第三桁,
跟蹤了程序但是找不到原因,請各位大俠幫忙看看
...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜雨悠扬 2006-03-20
  • 打赏
  • 举报
回复
SELECT TOP 1 * from tblStudent A
LEFT JOIN (SELECT TOP 1 * FROM tblStudent WHERE (stuno NOT IN (SELECT TOP 2 stuno FROM tblStudent B))) D ON 1=1
LEFT JOIN (SELECT TOP 1 * FROM tblStudent WHERE (stuno NOT IN (SELECT TOP 4 stuno FROM tblStudent B))) E ON 1=1
UNION
SELECT TOP 1 * from tblStudent A
LEFT JOIN (SELECT TOP 1 * FROM tblStudent WHERE (stuno NOT IN (SELECT TOP 3 stuno FROM tblStudent B))) D ON 1=1
LEFT JOIN (SELECT TOP 1 * FROM tblStudent WHERE (stuno NOT IN (SELECT TOP 5 stuno FROM tblStudent B))) E ON 1=1
WHERE A.stuno not in (SELECT TOP 1 stuno from tblStudent)

这是SQL语句的实现方法
fangbuge 2006-03-20
  • 打赏
  • 举报
回复
不会繁体字!看不明白!
caobob 2006-03-20
  • 打赏
  • 举报
回复
这样追求外观的做法极不可取.个人观点
syc958 2006-03-20
  • 打赏
  • 举报
回复
夜雨悠扬 2006-03-20
  • 打赏
  • 举报
回复
lint_row 的循环步数不正确 应该是每次增加2
baibai520 2006-03-20
  • 打赏
  • 举报
回复
呵呵,自己解決了,先放到這裡保存兩天,說不定有些 人需要我這樣的要求
忘記刪除一桁數據以後,那麼原來的第三桁就是現在的第二桁了,所以
ldtb_temp.Rows(lint_row + 1).Delete()
ldtb_temp.Rows(lint_row + 2).Delete()
需要改成這樣就可以了
ldtb_temp.Rows(lint_row + 1).Delete()
ldtb_temp.Rows(lint_row + 1).Delete()
呵呵,開心,希望能夠給哪些需要和我做一樣效果的人一點幫忙

夜雨悠扬 2006-03-20
  • 打赏
  • 举报
回复
这个直接用SQL语句作比较好
程序作的话,太麻烦了
baibai520 2006-03-20
  • 打赏
  • 举报
回复
很感謝大家的回復,有些公司在打印報表的時候,有時候需要看的字段比較少,但是數據量比較大,從公司的角度來看,這樣肯定很浪費紙張,所以就需要在報表裡面像我哪樣的打印,這個情況相信很多公司都會碰到吧,在不能修改數據源和不能影響程序別的地方的時候,用我這種方法還是不錯的,呵呵

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧