问题是这样的:
我想这样:
有一个查询对话框,设置查询参数,然后点查询按钮,执行查询操作,并将结果反映到主窗体,想查几次就可以查几次,点退出才关闭这个对话框。
但是结果:
查一次可以,查第二次就查不出来了,查询结果是0个,不懂不懂如果改成这样:查完就关闭对话框,想再查再打开就可以,但是这样不如第一种想法方便。大家帮忙解决下哈~ 代码如下:
 private void btnShow_Click(object sender, EventArgs e)
        {
            carID = txtCarID.Text;
            int period = (cmbPeriod.SelectedIndex + 1) * 15;
            int dt_hour = Convert.ToInt32(cmbTime.Value);
            startDt = startDt.AddHours(dt_hour - 1);
            startDt = startDt.AddMinutes(Convert.ToDouble(60 - period));
            endDt = endDt.AddHours(Convert.ToDouble(dt_hour));
            endDt = endDt.AddMinutes(period);            string str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DBTopo.mdb";
            OleDbConnection thisConnection = new OleDbConnection(str);
            thisConnection.Open();// open the mdb
            string str_pts = null;            if (carID == "")
            {
                MessageBox.Show("请输入您想查询的车辆编号!");
                return;
            }
            else
            {
               
                #region 显示车辆点
                mainfrm.pts.Clear();//初始化
                mainfrm.segs.Clear();                              if (rdb_showpts.Checked)//显示车辆点
                {
                    mainfrm.showPts = true;
                    mainfrm.showSegs = false;
                    if (startDt != endDt)
                    {
                        
                        OleDbCommand thisCommand = thisConnection.CreateCommand();                        
                        if (carID == "")
                            str_pts = @"SELECT * FROM HistoryGPS WHERE VT_DATE >=#" + startDt + "# AND VT_DATE <=#" + endDt + "#";
                        else
                            str_pts = @"SELECT * FROM HistoryGPS WHERE VT_ID = '" + carID + "' AND VT_DATE >=#" + startDt + "# AND VT_DATE <=#" + endDt + "#";
                        thisCommand.CommandText = str_pts;
                        OleDbDataReader ptsReader = thisCommand.ExecuteReader();
                        double max_x = 0;
                        double min_x = 0;
                        double max_y = 0;
                        double min_y = 0;
                        int cows = 0;
                        while (ptsReader.Read())
                        {
                            double x = 0;
                            double y = 0;
                            IPoint pt = new ESRI.ArcGIS.Geometry.Point();
                            cows++;//表示读的个数
                            if (cows == 1)
                            {
                                x = Convert.ToDouble(ptsReader["Matched_X"]);
                                y = Convert.ToDouble(ptsReader["Matched_Y"]);
                                pt.X = x;
                                pt.Y = y;
                                mainfrm.pts.Add(pt);
                                max_x = x;//赋初值
                                min_x = x;
                                max_y = y;
                                min_y = y;
                            }
                            else
                            {
                                x = Convert.ToDouble(ptsReader["Matched_X"]);
                                y = Convert.ToDouble(ptsReader["Matched_Y"]);
                                pt.X = x;
                                pt.Y = y;
                                mainfrm.pts.Add(pt);
                                if (x > max_x)
                                    max_x = x;
                                if (x < min_x)
                                    min_x = x;
                                if (y > max_y)
                                    max_y = y;
                                if (y < min_y)
                                    min_y = y;
                            }
                        }
                        mainfrm.pEnvelope.XMax = max_x;
                        mainfrm.pEnvelope.YMax = max_y;
                        mainfrm.pEnvelope.XMin = min_x;
                        mainfrm.pEnvelope.YMin = min_y;
                        mainfrm.pEnvelope.Expand(1.5, 1.5, true);
                        mainfrm.MapCtr.Extent = (IEnvelope)mainfrm.pEnvelope;//zoom to gps pts
                      
                    }
                }
                #endregion
    }
            thisConnection.Close();          
         //  this.Dispose();
 }