这最初是一个有两个部分的问题。 SQL问题和Visual Studio问题。我现在已将它分解为单独的问题,这是VS C#问题。
我想在某些label.text上使用visual studio显示值,并且遇到了一些问题。这是表单的图片以及当我尝试运行当前代码时会发生什么。
这是我目前来自Form1.cs代码的c#代码:
public Form1()
{
InitializeComponent();
}
private void Form1_Load_1(object sender, EventArgs e)
{
string str = "Provider=SQLNCLI10;Server=Historian;Database=Runtime;User Id=sa;Password=Historian2015!!;";
conn = new ADODB.Connection();
conn.Open(str, "", "", -1); // connection Open
playTrend_Click_1(sender, e);
Timer tmr = new Timer();
tmr.Interval = 1000;//ticks every 1 second
tmr.Tick += new EventHandler(tmr_Tick);
tmr.Start();
}
private void tmr_Tick(object sender, EventArgs e)
{
ADODB.Recordset rs = new ADODB.Recordset();
sql = "SELECT TOP 2 [DateTime] ,[TagName] ,[Value] FROM [Runtime].[dbo].[v_StringHistory] WHERE [TagName] = 'ERecipeRunning' OR [TagName] = 'PRecipeRunning'";
// RECORDSET OPEN
rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic, 0);
lbPCurrRecipeV.Text = rs.Fields[2].Value.ToString();
lbECurrRecipeV.Text = rs.Fields[2].Value.ToString();
}
private void playTrend_Click_1(object sender, EventArgs e)
{
var ccEa = System.Drawing.Color.FromArgb(0xff, 0x80, 0x00);
var ccEb = System.Drawing.Color.FromArgb(0xff, 0xcb, 0x97);
var ccPa = System.Drawing.Color.FromArgb(0x00, 0x80, 0xc0);
var ccPb = System.Drawing.Color.FromArgb(0xb0, 0xe6, 0xff);
lbPCurrRecipeV.ForeColor = ccPa;
lbPCurrRecipeV.BackColor = ccPb;
lbPCurrRecipeT.ForeColor = ccPb;
lbPCurrRecipeT.BackColor = ccPa;
lbECurrRecipeV.ForeColor = ccEa;
lbECurrRecipeV.BackColor = ccEb;
lbECurrRecipeT.ForeColor = ccEb;
lbECurrRecipeT.BackColor = ccEa;
}
}
如何将各自的值输入相应的标签?在原始帖子中,他们建议我从ADODB切换到ADO.NET。有人对我如何引用sql值有任何想法吗?
答案 0 :(得分:1)
看起来确实与我正在使用的ADODB连接有关。我找到了answer here。基本上,这是一个改变ADODB属性中的一些设置的问题。必须将Embed Interop Types更改为False,然后将Copy Local True设置为True。那让我筋疲力尽。
现在问题是修复我的sql字符串,我会很高兴。我打算明天调查使用ADO.net方法,就像你们建议的那样。