Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 由于我的查询,DataReader仍处于打开状态_Mysql_Vb.net_Datareader - Fatal编程技术网

Mysql 由于我的查询,DataReader仍处于打开状态

Mysql 由于我的查询,DataReader仍处于打开状态,mysql,vb.net,datareader,Mysql,Vb.net,Datareader,我有一个关于DataReader仍然打开的错误,但是我发现如果我使用不同的查询/命令,它可以正常工作 所以问题是我的mycommand字符串,但这是我加载所需数据所需的,所以有什么建议如何修复它吗?谢谢 Private Sub daily() Cursor = Cursors.WaitCursor() MySQLcon.ConnectionString = MySQLserver MySQLcon.Open() 'strPath

我有一个关于DataReader仍然打开的错误,但是我发现如果我使用不同的查询/命令,它可以正常工作

所以问题是我的mycommand字符串,但这是我加载所需数据所需的,所以有什么建议如何修复它吗?谢谢

     Private Sub daily()
    Cursor = Cursors.WaitCursor()
        MySQLcon.ConnectionString = MySQLserver
        MySQLcon.Open()
        'strPath & "\" & txtName.Text & ".xlsx"
        Dim dte As String = cboDate1.Text
        Dim myCommand1 As New MySql.Data.MySqlClient.MySqlCommand
        Dim myadapter As New MySql.Data.MySqlClient.MySqlDataAdapter
        Dim mybuilder As New MySql.Data.MySqlClient.MySqlCommandBuilder
        Dim mydatatable As New DataTable
        Dim mydataset As New DataSet
        myCommand1.Connection = MySQLcon

        'myCommand1.CommandText = "SELECT  `" + dte + "`.`Users`,concat((`users`.`Last Name`),', ',(`users`.`First Name`)) as `Name`,'" + dte + "'  as Date,`" + dte + "`.`Activity`,`" + dte + "`.`Field1` as `Project Name`,`" + dte + "`.`Field2` as `Job Name` ," + _
        '    "SUM(`" + dte + "`.`Field4`) as `Records`, SUM(`" + dte + "`.`Field5`)as Pages," + _
        '    "ROUND(sum(TIME_TO_SEC(`" + dte + "`.`Elapsed Time`))/3600,2)as `Hours`," + _
        '    "'G' as `REGS/HR`," + _
        '    "'H' as `PGS/HR`" + _
        '    "FROM `" + dte + "`" + _
        '    "INNER JOIN `users`" + _
        '    "ON `" + dte + "`.`Users`=`users`.`Employee ID`" + _
        '    "Where `" + dte + "`.`Group` = 'DATA ENTRY' and `" + dte + "`.`Field1` <> 'OVER-BREAK 1' and `" + dte + "`.`Field1` <> 'OVER-BREAK 2'  and (`" + dte + "`.`Activity` = 'KE' or `" + dte + "`.`Activity` = 'CH' or `" + dte + "`.`Activity` = 'SJ' or `" + dte + "`.`Activity` = 'VE' or `" + dte + "`.`Activity` = 'MB' or `" + dte + "`.`Activity` = 'TD' or `" + dte + "`.`Activity` = 'LK'  or `" + dte + "`.`Activity` = 'PG')" + _
        '    "GROUP BY  `" + dte + "`.`Users`, `" + dte + "`.`Activity`, `" + dte + "`.`Field1`"

        myCommand1.CommandText = "SELECT  `MERGED DATAENTRY`.`Users`,concat((`users`.`Last Name`),', ',(`users`.`First Name`)) as `Name`,'" + cboDate1.Text & " - " & cboDate2.Text + "'  as Date,`MERGED DATAENTRY`.`Activity`,`MERGED DATAENTRY`.`Field1` as `Project Name`,`MERGED DATAENTRY`.`Field2` as `Job Name` ," + _
            "SUM(`MERGED DATAENTRY`.`Field4`) as `Records`, SUM(`MERGED DATAENTRY`.`Field5`)as Pages," + _
            "ROUND(sum(TIME_TO_SEC(`MERGED DATAENTRY`.`Elapsed Time`))/3600,2)as `Hours`," + _
            "'G' as `REGS/HR`," + _
            "'H' as `PGS/HR`" + _
            "FROM `MERGED DATAENTRY`" + _
            "INNER JOIN `users`" + _
            "ON `MERGED DATAENTRY`.`Users`=`users`.`Employee ID`" + _
            "Where `MERGED DATAENTRY`.`Group` = 'DATA ENTRY' and `MERGED DATAENTRY`.`Field1` <> 'OVER-BREAK 1' and `MERGED DATAENTRY`.`Field1` <> 'OVER-BREAK 2'  and (`MERGED DATAENTRY`.`Activity` = 'KE' or `MERGED DATAENTRY`.`Activity` = 'CH' or `MERGED DATAENTRY`.`Activity` = 'SJ' or `MERGED DATAENTRY`.`Activity` = 'VE' or `MERGED DATAENTRY`.`Activity` = 'MB' or `MERGED DATAENTRY`.`Activity` = 'TD' or `MERGED DATAENTRY`.`Activity` = 'LK'  or `MERGED DATAENTRY`.`Activity` = 'PG')" + _
            "GROUP BY  `MERGED DATAENTRY`.`Users`, `MERGED DATAENTRY`.`Activity`, `MERGED DATAENTRY`.`Field1`"
        myadapter.SelectCommand = myCommand1
        myadapter.Fill(mydataset)
        mydataset.Tables.Add(mydatatable)
        DataGridView1.DataSource = mydataset.Tables(0)

        Dim xlApp As Microsoft.Office.Interop.Excel.Application
        Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
        Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value


        Dim i As Integer
        Dim j As Integer

        xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")


        For i = 0 To DataGridView1.RowCount - 1
            For j = 0 To DataGridView1.ColumnCount - 1
                For k As Integer = 1 To DataGridView1.Columns.Count
                    'Dim style As Excel.Style = xlWorkSheet.Application.ActiveWorkbook.Styles.Add("NewStyle")
                    'style.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow)
                    'xlWorkSheet.Cells(1, k).Style = "NewStyle"
                    xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText
                    xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString()
                    If DataGridView1(j, i).ColumnIndex = 9 Then
                        xlWorkSheet.Cells(i + 2, j + 1) = "=ROUND(" & DataGridView1(j, i).Value.ToString() & (DataGridView1(j, i).RowIndex + 2) & "/" & "I" & (DataGridView1(j, i).RowIndex + 2) & ",2)"

                    End If
                    If DataGridView1(j, i).ColumnIndex = 10 Then
                        xlWorkSheet.Cells(i + 2, j + 1) = "=ROUND(" & DataGridView1(j, i).Value.ToString() & (DataGridView1(j, i).RowIndex + 2) & "/" & "I" & (DataGridView1(j, i).RowIndex + 2) & ",2)"

                    End If
                Next
            Next
        Next

        xlWorkSheet.SaveAs(strPath & "\" & txtName.Text & ".xlsx")
        xlWorkBook.Close()
        xlApp.Quit()
        ReleaseObject(xlApp)
        ReleaseObject(xlWorkBook)
        ReleaseObject(xlWorkSheet)
        MessageBox.Show("File Export Successfully!")
  MySQLcon.Close()

End Sub
Private Sub-daily()
Cursor=Cursors.WaitCursor()
MySQLcon.ConnectionString=MySQLserver
MySQLcon.Open()
“strPath&“\”&txtName.Text&“.xlsx”
Dim dte As String=cboDate1.Text
将myCommand1作为新的MySql.Data.MySqlClient.MySqlCommand进行Dim
将myadapter设置为新的MySql.Data.MySqlClient.MySqlDataAdapter
将mybuilder设置为新的MySql.Data.MySqlClient.MySqlCommandBuilder
将mydatatable设置为新DataTable
将mydataset设置为新数据集
myCommand1.Connection=MySQLcon
'myCommand1.CommandText=“选择`+dte+`.`Users`、`Users`.`Last Name`、`、`、`Users`.`First Name`)作为`Name`、`+dte+`作为日期、`+dte+`.`Activity`、`+dte+`.`Field1`作为`Project Name`、`+dte+`、`Field2`作为`Job Name`、`_
“SUM(`+dte+`.`Field4`)作为`Records`,SUM(`+dte+`.`Field5`)作为Pages,”+_
“四舍五入(和(时间到秒(`+dte+`.`经过的时间`))/3600,2)为`小时',”+_
“'G'作为'REGS/HR',”+_
“‘H’作为‘PGS/HR’”+_
来自`+dte+`+_
““内部联接”“用户””+_
“+dte+”`.`Users`=`Users`.`Employee ID`.+_
其中,“+dte+”`.`Group`='DATA ENTRY'和“+dte+”`.`Field1`` OVER-BREAK 1'和“+dte+”`.`Field1`` OVER-BREAK 2'和(`+dte+”。`Activity`='KE'或`+dte+”`.`Activity`='CH'或`+dte+`.`Activity`='SJ'或`+dte+`.`Activity`.`Activity`='VE'或`dte+`.`Activity='MB'或`+dte`“`.`Activity`='TD'或`+dte+”`.`Activity`='LK'或`+dte+`.`Activity`='PG')”+_
“+dte+”、“+dte+”、“+dte+”、“`Activity`、`+dte+”、`Field1`按分组”
MyCommand 1.CommandText=“选择`MERGED DATAENTRY`.`Users`、concat(`Users`.`Last Name`)、concat(`Users`.`First Name`)作为`Name`、`+CboDatae1.Text&`-“&CboDatae2.Text+””作为日期、`MERGED DATAENTRY`.`Activity`、`MERGED DATAENTRY`.`Field1`作为`Project Name`、`MERGED DATAENTRY`.`Field2`作为`Job Name`、`、`+_
“SUM(`MERGED DATAENTRY`.`Field4`)作为`Records`,SUM(`MERGED DATAENTRY`.`Field5`)作为Pages,”+_
“四舍五入(总和(时间到秒(`MERGED DATAENTRY`.`appeased TIME`))/3600,2)为`Hours`,”+_
“'G'作为'REGS/HR',”+_
“'H'作为'PGS/HR`”+_
“来自`合并数据项'”+_
“内部联接`users`”+_
“在`合并数据项'。`Users`=`Users`.`Employee ID`”上+_
其中`合并数据项'。`组'='数据项'和`合并数据项'。`Field1`'中断1'和`合并数据项'。`Field1`'中断2'和(`MERGED DATAENTRY`.`Activity`='KE'或`MERGED DATAENTRY`.`Activity`='CH'或`MERGED DATAENTRY`.`Activity`='SJ'或`MERGED DATAENTRY`.`Activity`='VE'或`MERGED DATAENTRY`.`Activity`='MB'或`MERGED DATAENTRY`.`Activity`='LK'或`MERGED DATAENTRY`.`Activity`='PG'+_
“按‘合并数据项’、‘用户’、‘合并数据项’、‘活动’、‘合并数据项’、‘字段1’分组”
myadapter.SelectCommand=myCommand1
myadapter.Fill(mydataset)
mydataset.Tables.Add(mydatatable)
DataGridView1.DataSource=mydataset.Tables(0)
Dim xlApp作为Microsoft.Office.Interop.Excel.Application
将工作簿命名为Microsoft.Office.Interop.Excel.Workbook
将工作表改为Microsoft.Office.Interop.Excel.Worksheet
对象为Dim misValue=System.Reflection.Missing.Value
作为整数的Dim i
作为整数的Dim j
xlApp=新的Microsoft.Office.Interop.Excel.ApplicationClass
xlWorkBook=xlApp.Workbooks.Add(错误值)
xlWorkSheet=xlWorkBook.Sheets(“sheet1”)
对于DataGridView1.RowCount-1的i=0
对于j=0到DataGridView1.ColumnCount-1
对于k作为整数=1的DataGridView1.Columns.Count
'将样式设置为Excel.style=xlWorkSheet.Application.ActiveWorkbook.Styles.Add(“NewStyle”)
'style.Interior.Color=System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow)
'xlWorkSheet.Cells(1,k).Style=“NewStyle”
xlsheet.Cells(1,k)=DataGridView1.Columns(k-1).HeaderText
xlWorkSheet.Cells(i+2,j+1)=DataGridView1(j,i).Value.ToString()
如果DataGridView1(j,i).ColumnIndex=9,则
xlsheetwork.Cells(i+2,j+1)=“=ROUND(&DataGridView1(j,i).Value.ToString()&(DataGridView1(j,i).RowIndex+2)&”/“&”i“&”i“&(DataGridView1(j,i).RowIndex+2)&”,2)”
如果结束
如果DataGridView1(j,i).ColumnIndex=10,则
xlsheetwork.Cells(i+2,j+1)=“=ROUND(&DataGridView1(j,i).Value.ToString()&(DataGridView1(j,i).RowIndex+2)&”/“&”i“&”i“&(DataGridView1(j,i).RowIndex+2)&”,2)”
如果结束
下一个
下一个
下一个
xlWorkSheet.SaveAs(strPath&“\”&txtName.Text&“.xlsx”)
xlWorkBook.Close()
xlApp.Quit()
ReleaseObject(xlApp)
ReleaseObject(xlWorkBook)
ReleaseObject(xlWorkSheet)
Show(“文件导出成功!”)
MySQLcon.Close()
端接头

MySqlDataAdapter是IDisposable,您不会处理它 MySQLcon和MySQLserver是在您发布的代码之外定义的,所以我在这里做一些假设

我可以想象这里正在进行连接池,也就是说,每次运行它时,您并没有真正获得一个新的db连接
Dim myCommand1 As New MySql.Data.MySqlClient.MySqlCommand
Dim myadapter As New MySql.Data.MySqlClient.MySqlDataAdapter
Dim mybuilder As New MySql.Data.MySqlClient.MySqlCommandBuilder
.....
Using myadapter As New MySql.Data.MySqlClient.MySqlDataAdapter
    Using myCommand1 As New MySql.Data.MySqlClient.MySqlCommand
        Using mybuilder As New MySql.Data.MySqlClient.MySqlCommandBuilder
        .....
        End Using
    End Using
End Using