我必须用c#创建一个彩票计划。
我使用的表是3.
第一张表:Clients
Client_num Client_Name Client_ID
第二张表:Prize
Prize_Name Prize_ID
第3表:Report
Prize_ID Client_ID ID_Number --(who can be not unique).
我的任务是创建一个可视化客户端数量的表单(1到435333之间,每月客户端数量不同,因为我是根据特定条件生成的)。
为此我在我的代码中使用select查询 - 谁从表Clents
返回MAX ID。
除了客户端数量我必须可视化奖品名称,这两行必须在报告中可视化。 我的问题是 - 如何创建1到435533之间的随机数,因为这些数字是文本框中“客户”表的客户端数 - 客户端编号。
以下是代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Random Lottery = new Random();
SqlConnection con = new SqlConnection("Data Source=sqlsrvr;Initial Catalog=lottery;Integrated Security=True;");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT MAX(id) AS ID FROM clients", con);
cmd.ExecuteNonQuery();
con.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
}
}
答案 0 :(得分:0)
只需从您的客户表中随机选择50个
SELECT TOP 50 id FROM clients ORDER BY NEWID()
答案 1 :(得分:0)
很难理解你的要求,我试着在下面总结它们,所以如果这不正确那么解决方案也会出错!
要点:
积分4& 5对问题和解决方案很重要。
基于此,我建议如下。这只是Pseduo代码,因为您可以在C#或SQL中执行某些部分,因此您可以选择。
提取以前没有赢过的客户。
从clients.client_id不在的客户端中选择ROW_NUMBER(),Client_num,Client_Name,Client_ID(从报告中选择client_id);
ROW_NUMBER()(这可能因您的数据库而异)将为每条记录提取一条记录/行号。现在,这是您将在下一部分中使用的新临时顺序唯一ID。
List<Clients>
现在你有50位从未赢过的独特获奖者。
这确实意味着随着时间的推移,可能的获胜者名单将越来越少,直到最终你将获得少于50个可能的获胜者。所以你也必须应对这种可能性。