public DataSet GetDataSet(string column, string tablename, string strwhere) { using (OracleConnection _connection = new OracleConnection(OracleHelper.GetConnectionstring())) { writelog = new Write_Log(); DataSet ds = new DataSet(); string sqlstr = "select " + column + " from " + tablename; if (!String.IsNullOrEmpty(strwhere)) { sqlstr = sqlstr + " where " + strwhere; } try { _connection.Open(); OracleDataAdapter da = new OracleDataAdapter(); da.SelectCommand = new OracleCommand(sqlstr, _connection); da.Fill(ds); } catch (Exception ex) { writelog.Write("填充数据时出错!" + ex.Message + System.Environment.NewLine + sqlstr, "log"); return(null); } finally { _connection.Close(); _connection.Dispose(); } writelog = null; return(ds); } //writelog = new Write_Log(); //if (ConnectDB.con.State != ConnectionState.Open) //{ // init = new ConnectDB(); // strError = init.DBConnect(); // if (!string.IsNullOrEmpty(strError)) // { // writelog.Write(strError, "log"); // return null; // } //} //string sqlstr = "select " + column + " from " + tablename; //if (!String.IsNullOrEmpty(strwhere)) //{ // sqlstr = sqlstr + " where " + strwhere; //} ////writelog.Write(sqlstr, "log"); //DataSet ds = new DataSet(); //writelog.Write("1连接状态:" + ConnectDB.con.State.ToString() + "\r\n 连接字符串:" + ConnectDB.con.ConnectionString, "log"); //OracleDataAdapter ada = new OracleDataAdapter(sqlstr, ConnectDB.con); //try //{ // writelog.Write("2连接状态:"+ConnectDB.con.State.ToString()+"\r\n 连接字符串:"+ ConnectDB.con.ConnectionString, "log"); // ada.Fill(ds, tablename); //} //catch (Exception ex) //{ // writelog.Write("填充数据时出错!" + ex.Message + System.Environment.NewLine + sqlstr, "log"); // return null; //} ////init.DisConnectDB(ConnectDB.con); //init = null; //writelog = null; //return ds; }
private void Form1_Load(object sender, EventArgs e) { string Return_Value; System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;//线程处理后的错误处理控件任然可以赋值 Return_Value = INIExists(inifile); if (!String.IsNullOrEmpty(Return_Value)) { MessageBox.Show(Return_Value); } StringBuilder objStrBd = new StringBuilder(256); GetPrivateProfileString("EQUIPMENT", "INSTRUMENTID", "", objStrBd, 256, FileName); instrument_id = objStrBd.ToString(); textBox2.Text = INIHelper.getInstance().IniReadValue("EQUIPMENT", "Encode"); string orgID = INIHelper.getInstance().IniReadValue("EQUIPMENT", "Agencies"); string sql = "select 资源id,简称 from 机构 where 资源id='in_机构id'"; sql = sql.Replace("in_机构id", orgID); DataTable orgName = OracleHelper.GetDataTable(sql); if (orgName.Rows.Count > 0) { textBox1.Text = orgName.Rows[0]["简称"].ToString(); } using (OracleConnection _connection = new OracleConnection(OracleHelper.GetConnectionstring())) { DataTable dt = new DataTable(); ListViewItem item = new ListViewItem(); try { _connection.Open(); OracleDataAdapter da = new OracleDataAdapter(); da.SelectCommand = new OracleCommand("select id,名称 from 检验仪器 where instr('" + instrument_id + "',id)>0", _connection); da.Fill(dt); bolLongin = true; } catch (Exception exs) { LoginForm log = new LoginForm(); if (log.ShowDialog() == DialogResult.OK) { bolLongin = true; } else { Application.Exit(); } } finally { _connection.Close(); } lv_Device.Items.Clear(); foreach (DataRow i in dt.Rows) { item = lv_Device.Items.Add(i["名称"].ToString(), 1); item.Tag = i["id"].ToString(); lv_Device.Columns[2].Text = "0"; } } if (lv_Device.Items.Count > 0) { but_begin.Enabled = false; but_end.Enabled = true; bolCon = true; backgroundWorker1.RunWorkerAsync(); } this.WindowState = FormWindowState.Minimized; this.Visible = false; this.notifyIcon1.Visible = true; this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged); }
/// <summary> /// 判断是否有重复 /// </summary> public void IsUpdate() { ds = dsHandle.GetDataSet(@"解析类型,通讯程序名, Extractvalue(通讯参数, '/root/db_type') as db_type, Extractvalue(通讯参数, '/root/db_name') as db_name, Extractvalue(通讯参数, '/root/user_name') as user_name, Extractvalue(通讯参数, '/root/password') as password, Extractvalue(通讯参数, '/root/server_name') as server_name, Extractvalue(通讯参数, '/root/parastr') as parastr, Extractvalue(通讯参数, '/root/selectstr') as selectstr", "检验仪器", "id = '" + strInstrumentID + "'"); sqlstr = ds.Tables[0].Rows[0]["selectstr"].ToString(); if (sqlstr.IndexOf("[SAMPLE_NO]") > 0) { sqlstr = sqlstr.Replace("[SAMPLE_NO]", strTestNO); } try { conDB.Open(); } catch (Exception e) { //conDB.Close(); writeLog.Write("数据库连接失败!" + e.Message, "log"); strError = "数据库连接失败!" + e.Message; return; } if (conDB.State != ConnectionState.Open) { return; } DataTable dtSample = OracleHelper.GetDataTable(@"select wm_concat(样本序号) 样本序号 from 检验记录 where id in (select 记录id from 检验普通结果 where 结果标志 is not null) and 仪器id = '" + strInstrumentID + @"' and to_char(核收时间, 'yyyy-mm-dd') = to_char(sysdate, 'yyyy-mm-dd')"); string _sampleNo = dtSample.Rows[0]["样本序号"].ToString(); if (string.IsNullOrEmpty(sqlstr)) { sqlstr = @"SELECT dDate, nSid, sItem, fConc, sConc FROM Result where Format(dDate, \""yyyy-mm-dd\"") = Format(date() - 1, \""yyyy-mm-dd\"") and nSid not in (parameter) order by nsid"; } sqlstr = sqlstr.Replace("parameter", _sampleNo == "" ? "-1" : _sampleNo);//替换样本号 dsResult = new DataSet(); try { OleDbDataAdapter ada = new OleDbDataAdapter(sqlstr, conDB); ada.Fill(dsResult, "Table"); } catch { dsResult = null; } finally { conDB.Close(); } }
/// <summary> /// 默认解析方式 /// </summary> /// <param name="a"></param> /// <param name="e"></param> public void GetResult(object a, EventArgs e) { try { string strTestTime; //检验时间 string strSampleNo; //标本号 string strBarCode = ""; //条码 string strOperator = ""; //检验医师 string strSampleType = ""; //检验类型 string StrSpecimen = ""; //标本类型 string ChannelType; //0-普通结果;1-直方图;2-散点图;3-直方图界标;4-散点图界标;5-BASE64 string testItemID = ""; //通道项目ID DataRow[] FindRow; //解析设置 TestGraph = new List <string>(); saveResult = new SaveResult(); IsUpdate(); //重新检查是否有新数据 tItemChannel = OracleHelper.GetDataTable(@"Select 通道编码, m.项目id, Nvl(小数位数, 2) As 小数位数, Nvl(换算比, 0) As 换算比, Nvl(加算值, 0) As 加算值, j.结果类型 From 仪器检测项目 m, 检验项目 j Where m.项目id = j.项目id and m.仪器Id='" + strInstrumentID + "'"); if (dsResult.Tables[0].Rows.Count == 0) //判断是否有新标本 { writeLog.Write(DateTime.Now.ToString() + "未检测到新数据!", "log"); return; } DataTable _dsResult = SelectDistinct(dsResult.Tables[0], "nSid"); foreach (DataRow dr in _dsResult.Rows) //循环标本号 { strTestTime = DateTime.Parse(dr["dDate"].ToString()).ToString("yyyy-MM-dd") + " " + DateTime.Now.ToString("HH:mm:ss");; strSampleNo = dr["nSid"].ToString(); string TestResultValue = ""; foreach (DataRow dr1 in dsResult.Tables[0].Select("nSid='" + dr["nSid"].ToString() + "'"))//循环标本号里面的检验项目 { string _channelNo = dr1["sItem"].ToString(); FindRow = tItemChannel.Select("通道编码='" + _channelNo.Trim() + "'"); if (FindRow.Length == 0) //无普通结果则查找图像能道,无图像通道则更新通道类型为空 { ChannelType = null; writeLog.Write(strDevice, "未设置通道:" + _channelNo, "log"); } else { testItemID = FindRow[0]["项目id"].ToString(); ChannelType = "0"; //普通结果 TestResultValue = TestResultValue + testItemID + "^" + dr1["Result"].ToString() + "|"; } } TestResultValue = strTestTime + "|" + strSampleNo + "^" + strSampleType + "^" + strBarCode + "|" + strOperator + "|" + StrSpecimen + "|" + "|" + TestResultValue; try { saveResult.SaveTextResult(strInstrumentID, TestResultValue, TestGraph, null); saveResult.UpdateData(); writeLog.Write(strDevice, "解析结果: " + TestResultValue, "result"); } catch (Exception ex) { writeLog.Write(strDevice, "保存失败: " + ex.ToString(), "log"); } //System.Windows.Forms.MessageBox.Show(TestResultValue); } } catch (Exception exp1) { writeLog.Write(strDevice, "处理失败: " + exp1.ToString(), "log"); } }
/// <summary> /// 提取数据 /// </summary> public void Start() { try { conDB.Open(); } catch (Exception e) { writeLog.Write("数据库连接失败!" + e.Message, "log"); strError = "数据库连接失败!" + e.Message; return; } if (conDB.State != ConnectionState.Open) { return; } DataTable dtSample = OracleHelper.GetDataTable(@"select wm_concat(样本序号) 样本序号 from 检验记录 where id in (select 记录id from 检验普通结果 where 结果标志 is not null) and 仪器id = '" + strInstrumentID + @"' and to_char(核收时间, 'yyyy-mm-dd') = to_char(sysdate, 'yyyy-mm-dd')"); string _sampleNo = dtSample.Rows[0]["样本序号"].ToString(); if (string.IsNullOrEmpty(sqlstr)) { sqlstr = @"SELECT dDate, nSid, sItem, fConc, sConc FROM Result where Format(dDate, \""yyyy-mm-dd\"") = Format(date() - 1, \""yyyy-mm-dd\"") and nSid not in (parameter) order by nsid"; } sqlstr = sqlstr.Replace("parameter", _sampleNo == "" ? "-1" : _sampleNo);//替换样本号 dsResult = new DataSet(); try { OleDbDataAdapter ada = new OleDbDataAdapter(sqlstr, conDB); ada.Fill(dsResult, "Table"); } catch (System.Data.OleDb.OleDbException sqlex) { strError = sqlex.Message; writeLog.Write(strError, "log"); return; } catch (Exception ex) { strError = ex.Message; writeLog.Write(strError, "log"); return; } finally { conDB.Close(); } object socketListen = strError; GetResult(strError, null); aTimer.Elapsed += new ElapsedEventHandler(GetResult); aTimer.Interval = 10000; aTimer.AutoReset = true; aTimer.Enabled = true; }