Как я показываю индикатор выполнения/экран загрузки при извлечении строк datagrid из базы данных в VB.NET и оракул
Привет! все,я просто новичок в Visual Basic.Хранимая процедура Net и Oracle.
**Вот мой код вызова строк в базе данных**
Public Function RESA_Checker(ByVal stores As String, ByVal bus_date As String, ByVal warehouse As String) dt = New DataTable bg.GetProcDataTable(connStr, "SALES_CHECKER.procedure_checker") cmd.Parameters.Add(New OracleParameter("stores", OracleDbType.Varchar2)).Value = stores cmd.Parameters.Add(New OracleParameter("bus_date", OracleDbType.Varchar2)).Value = bus_date cmd.Parameters.Add(New OracleParameter("warehouse", OracleDbType.Varchar2)).Value = warehouse cmd.Parameters.Add(New OracleParameter("O_OUTPUT", OracleDbType.RefCursor)).Direction = ParameterDirection.Output adap_or.SelectCommand = cmd adap_or.Fill(dt) Return dt ora_conn.Close() End Function
Моя цель состоит в том, чтобы пользователь был проинформирован через диалоговое окно с индикатором выполнения или анимированным gif, что форма загружается и все еще извлекает записи из базы данных, говорит "Пожалуйста, подождите"/"поиск" и предотвращает путаницу для пользователя, думающего, что форма разбилась.
P. s. было бы полезно, если бы вы дали ссылки на видеоуроки.
Я очень надеюсь , что вы сможете мне помочь, Спасибо.
Что я уже пробовал:
У меня есть этот набор кодов, который я нашел в интернете. Это работает, но как я могу преобразовать этот импортирующий CSV-файл из выборки строк из базы данных с помощью хранимой процедуры Oracle.
Dim strRow As String() 'String array to read all fields in a row Dim dblAmount As Double 'Variable for total amount Dim blnReported As Boolean = True 'Flag to check progress report completed or not 'Create TextFieldParser class to parse the stock.csv file in the current location Dim txtFile As FileIO.TextFieldParser Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Allow background operation to be cancelled bgWorker.WorkerSupportsCancellation = True 'Allow background operation to report progress bgWorker.WorkerReportsProgress = True 'Disable Stop Button. It is enabled only after start 'button is pressed btnStop.Enabled = False 'set status message lblStatus.Text = "Press Start to import data from csv." 'Add columns to the grid dgvCSVData.Columns.Add("colNo", "No") dgvCSVData.Columns("colNo").Width = 30 dgvCSVData.Columns.Add("colDate", "Date") dgvCSVData.Columns("colDate").Width = 60 dgvCSVData.Columns.Add("colItem", "Item") dgvCSVData.Columns("colItem").Width = 120 dgvCSVData.Columns.Add("colQty", "Quantity") dgvCSVData.Columns("colQty").Width = 50 dgvCSVData.Columns.Add("colUnit", "Unit") dgvCSVData.Columns("colUnit").Width = 30 dgvCSVData.Columns.Add("colAmt", "Amt") dgvCSVData.Columns("colAmt").Width = 60 End Sub Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click 'Disable Start button and Enable Stop btnStart.Enabled = False btnStop.Enabled = True 'set status message lblStatus.Text = "Importing data from CSV file." 'Start time-consuming operation in background Call bgWorker.RunWorkerAsync() End Sub Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click 'Enable Start button and disable Stop btnStart.Enabled = True btnStop.Enabled = False 'Stop background operation bgWorker.CancelAsync() 'set status message lblStatus.Text = "Import cancelled. Press Start again." End Sub Private Sub bgWorker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgWorker.DoWork Dim intCount As Int16 = 0 txtFile = New FileIO.TextFieldParser("stock.csv") 'Specify structure of the file txtFile.TextFieldType = FileIO.FieldType.Delimited txtFile.SetDelimiters(",") 'Skip header row txtFile.ReadFields() 'Start reading data from file While Not txtFile.EndOfData If bgWorker.CancellationPending Then e.Cancel = True Exit Sub Else 'Wait for Progress Report to finish While Not blnReported Application.DoEvents() End While 'Read all field in a row into a string array strRow = txtFile.ReadFields() 'Do some calculations and assign value to data grid dblAmount = CDbl(strRow(3)) * CDbl(strRow(4)) 'Add some sleep to simulate a long running operation System.Threading.Thread.Sleep(500) 'Progress report pending blnReported = False 'increment counter intCount += 1 'Report the progress bgWorker.ReportProgress(10, intCount) End If End While End Sub Private Sub bgWorker_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles bgWorker.ProgressChanged 'Copy values to data grid dgvCSVData.Rows.Add(strRow) dgvCSVData.Rows(dgvCSVData.CurrentRow.Index - 1).Cells("colAmt").Value = dblAmount pgbCopyProgress.Value = e.UserState 'Progress report finished blnReported = True End Sub Private Sub bgWorker_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgWorker.RunWorkerCompleted If e.Cancelled Or Not IsNothing(e.Error) Then 'Clear the data grid dgvCSVData.Rows.Clear() Else 'Progress completed pgbCopyProgress.Value = 100 'Release txtfile txtFile.Dispose() btnStop.Enabled = False btnStart.Enabled = True End If End Sub