2016-06-08 27 views
1

我有问题,SQL如何选择所有memeber vb.net

我想选择所有memeber有feesdate是< 1个芒斯前

我的代码:

Private Sub ShowData() 
    Dim dtToday As DateTime = Date.Today 
    dtToday = dtToday.AddMonths(-1) 

    DataGridView1.RowTemplate.Height = 30 
    DataGridView1.Font = New Font("Arial", 10, FontStyle.Regular) 
    conn.Open() 
    If conn.State = ConnectionState.Open Then 
     conn.Close() 
    End If 

    With cmd 
     .Connection = conn 
     .CommandText = "select f_id,f_recno,f_name,f_workout,f_feesmode,f_fees,f_feesdate from 
tbl_memberfees where f_feesdate > " & Date.Today.AddMonths(-1) & "" 
    End With 
    da.SelectCommand = cmd 
    dt.Clear() 
    da.Fill(dt) 
    DataGridView1.DataSource = dt 
    conn.Close() 
    datagridviewcontrol() 
End Sub 
+0

***数据类型是f_feesdate ***?我还建议添加参数,因为你的'sql'语法也是错误的......你需要'''在你的日期周围。如果你有参数,这不会是一个问题......在另一个说明中,'feesdate <1个小时前'您的查询是错误的。 'f_feesdate>''应该是'f_feesdate <'如果你想要它不到一个月前,目前这是更大的... – Codexer

+0

类型f_feesdate是文本..可以halp或作小例 – amine02

+0

我强烈建议进行更改到该列的日期时间/日期列数据类型***否则***您需要转换或将其转换为正确的类型以进行比较......考虑到这一点,您可以在其中存储任何内容,请考虑关于你的数据类型。我会强烈搜索谷歌关于这个以及使用参数。当你以正确的方式得到这个关于构建你的查询的理解工作... – Codexer

回答

-1

试试这个...因为您将数据作为varchar存储在SQL中。你应该在SQL中进行转换。

Private Sub ShowData() 
Dim dtToday As DateTime = Date.Today 
dtToday = dtToday.AddMonths(-1) 

DataGridView1.RowTemplate.Height = 30 
DataGridView1.Font = New Font("Arial", 10, FontStyle.Regular) 
conn.Open() 
If conn.State = ConnectionState.Open Then 
    conn.Close() 
End If 

With cmd 
    .Connection = conn 
.CommandText = 
"selectf_id,f_recno,f_name,f_workout,f_feesmode,f_fees,f_feesdate 
from tbl_memberfees 
where CONVERT(DATETIME, f_feesdate , XXX)> " & Date.Today.AddMonths(-1) & "" 
End With 
da.SelectCommand = cmd 
dt.Clear() 
da.Fill(dt) 
DataGridView1.DataSource = dt 
conn.Close() 
datagridviewcontrol() 
End Sub 

其中XXX是存储为字符串的日期的当前格式。

+0

此外,你应该只是将varchar更改为日期时间。 – coder32

+0

有没有人读过评论了?另外你的命令文本是无效的SQL。如果您确实阅读了我所讨论的评论... – Codexer

+0

现在没关系,现在我可以将文本类型更改为dateandtime 并且您的代码也可以正常工作 感谢所有感谢重播 – amine02