简体   繁体   English

Vb.net数据放错了位置

[英]Vb.net data misplaced

Using visual studio 2010 I'm developing an vb.net application in which I need to store more than 10000 records in a table. 使用Visual Studio 2010,我正在开发一个vb.net应用程序,其中需要在一个表中存储10000条以上的记录。 The table format is 表格格式为

|empno |year |january|february| march |april |may |june |july |august |September |october |november  |december| total|

Sample data: 样本数据:

101 2010 10000 15000 25000
101 2011 15000 20000 35000
101 2012 20000 25000 45000
101 2013 25000 30000 55000
102 2008 1000  1500  2500
102 2009 1500  2000  3500
102 2010 10000 15000 25000
102 2011 15000 20000 35000
102 2012 20000 25000 45000
102 2013 25000 30000 55000

Now the problem is when I'm inserting the data into this table, it doesn't stored properly. 现在的问题是,当我将数据插入此表时,它没有正确存储。 I mean, It seems to be 我的意思是,似乎

102 2012 20000 25000 45000
101 2010 10000 15000 25000
101 2011 15000 20000 35000
101 2012 20000 25000 45000
101 2013 25000 30000 55000
102 2008 1000  1500  2500
102 2009 1500  2000  3500
102 2010 10000 15000 25000
102 2011 15000 20000 35000
102 2013 25000 30000 55000

In every set of data one of the year's record is stored at the top of the table. 在每组数据中,一年的记录都存储在表格的顶部。 So, when I'm displaying records for a particular employee, it doesn't display it properly(I mean not in the order). 因此,当我显示特定员工的记录时,它无法正确显示(我的意思是顺序不对)。 Ex: for empno 102, the result is like 例如:对于empno 102,结果类似于

102 2012 20000 25000 45000
102 2008 1000  1500  2500
102 2009 1500  2000  3500
102 2010 10000 15000 25000
102 2011 15000 20000 35000
102 2013 25000 30000 55000

I think Sorting by year is not a solution. 我认为按年份排序不是解决方案。 Because, it has many records for a year. 因为,它一年有很多记录。

I checked for all the records. 我检查了所有记录。 Only some of the record having this problem. 只有一些记录存在此问题。 I don't know anything about this problem and how to solve it. 我对这个问题及其解决方法一无所知。 Can anyone what is the reason for this and how to avoid? 任何人都可以这样做的原因是什么,如何避免?

Thanks in advance 提前致谢

Edit: Code 编辑:代码

If yodor1 <= 2015 Then
            up = 2015
        ElseIf yodor1 <= 2025 Then
            up = 2025
        ElseIf yodor1 <= 2035 Then
            up = 2035
        ElseIf yodor1 <= 2045 Then
            up = 2045
        End If

        con.Open()
        txt = "select * from pension where empno='" & TextBox5.Text & "' "
        cmd = New SqlCommand(txt, con)
        reader = cmd.ExecuteReader()
        While reader.Read
            If yodor1 <= up Then
                flag = False
                display2.grid1.set_TextMatrix(a, 0, reader("year"))
                display2.grid1.set_TextMatrix(a, 1, reader("january"))
                display2.grid1.set_TextMatrix(a, 2, reader("february"))
                display2.grid1.set_TextMatrix(a, 3, reader("march"))
                display2.grid1.set_TextMatrix(a, 4, reader("april"))
                display2.grid1.set_TextMatrix(a, 5, reader("may"))
                display2.grid1.set_TextMatrix(a, 6, reader("june"))
                display2.grid1.set_TextMatrix(a, 7, reader("july"))
                display2.grid1.set_TextMatrix(a, 8, reader("august"))
                display2.grid1.set_TextMatrix(a, 9, reader("septemper"))
                display2.grid1.set_TextMatrix(a, 10, reader("october"))
                display2.grid1.set_TextMatrix(a, 11, reader("november"))
                display2.grid1.set_TextMatrix(a, 12, reader("december"))
                a = a + 1
                yodor1 = yodor1 + 1
            ElseIf yodor1 <= (up + 10) Then
                flag = False
                display2.grid2.set_TextMatrix(b, 0, reader("year"))
                display2.grid2.set_TextMatrix(b, 1, reader("january"))
                display2.grid2.set_TextMatrix(b, 2, reader("february"))
                display2.grid2.set_TextMatrix(b, 3, reader("march"))
                display2.grid2.set_TextMatrix(b, 4, reader("april"))
                display2.grid2.set_TextMatrix(b, 5, reader("may"))
                display2.grid2.set_TextMatrix(b, 6, reader("june"))
                display2.grid2.set_TextMatrix(b, 7, reader("july"))
                display2.grid2.set_TextMatrix(b, 8, reader("august"))
                display2.grid2.set_TextMatrix(b, 9, reader("septemper"))
                display2.grid2.set_TextMatrix(b, 10, reader("october"))
                display2.grid2.set_TextMatrix(b, 11, reader("november"))
                display2.grid2.set_TextMatrix(b, 12, reader("december"))
                b = b + 1
                yodor1 = yodor1 + 1
            ElseIf yodor1 <= (yodor + 19) Then
                flag = False
                DISPLAY3.grid2.set_TextMatrix(f, 0, reader("year"))
                DISPLAY3.grid2.set_TextMatrix(f, 1, reader("january"))
                DISPLAY3.grid2.set_TextMatrix(f, 2, reader("february"))
                DISPLAY3.grid2.set_TextMatrix(f, 3, reader("march"))
                DISPLAY3.grid2.set_TextMatrix(f, 4, reader("april"))
                DISPLAY3.grid2.set_TextMatrix(f, 5, reader("may"))
                DISPLAY3.grid2.set_TextMatrix(f, 6, reader("june"))
                DISPLAY3.grid2.set_TextMatrix(f, 7, reader("july"))
                DISPLAY3.grid2.set_TextMatrix(f, 8, reader("august"))
                DISPLAY3.grid2.set_TextMatrix(f, 9, reader("septemper"))
                DISPLAY3.grid2.set_TextMatrix(f, 10, reader("october"))
                DISPLAY3.grid2.set_TextMatrix(f, 11, reader("november"))
                DISPLAY3.grid2.set_TextMatrix(f, 12, reader("december"))
                f = f + 1
                yodor1 = yodor1 + 1
            ElseIf yodor1 < (yodor + 30) Then
                flag = False
                DISPLAY3.grid1.set_TextMatrix(c, 0, reader("year"))
                DISPLAY3.grid1.set_TextMatrix(c, 1, reader("january"))
                DISPLAY3.grid1.set_TextMatrix(c, 2, reader("february"))
                DISPLAY3.grid1.set_TextMatrix(c, 3, reader("march"))
                DISPLAY3.grid1.set_TextMatrix(c, 4, reader("april"))
                DISPLAY3.grid1.set_TextMatrix(c, 5, reader("may"))
                DISPLAY3.grid1.set_TextMatrix(c, 6, reader("june"))
                DISPLAY3.grid1.set_TextMatrix(c, 7, reader("july"))
                DISPLAY3.grid1.set_TextMatrix(c, 8, reader("august"))
                DISPLAY3.grid1.set_TextMatrix(c, 9, reader("septemper"))
                DISPLAY3.grid1.set_TextMatrix(c, 10, reader("october"))
                DISPLAY3.grid1.set_TextMatrix(c, 11, reader("november"))
                DISPLAY3.grid1.set_TextMatrix(c, 12, reader("december"))
                c = c + 1
                yodor1 = yodor1 + 1
            End If
        End While
        reader.Close()
        con.Close()

First of all you better use parametrized queries to prevent SQL Injection . 首先,最好使用参数化查询来防止SQL注入 Add ORDER BY clause to your query to sort the records by year 在查询中添加ORDER BY子句以按year对记录进行排序

Try This : 尝试这个 :

txt = "select * from pension where empno= @empno ORDER BY year" 
cmd = New SqlCommand(txt, con)
cmd.Parameters.AddWithValue("@empno", TextBox5.Text)  

Finally I've found the answer. 最后,我找到了答案。 I've used Clear() method 我用过Clear()方法

display2.grid1.clear()
display2.grid2.clear()
DISPLAY3.grid1.clear()
DISPLAY3.grid2.clear()

Now my problem is solved 现在我的问题解决了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM