My application allows the user to add printers to their shift log. They do this clicking on the add printer button and selecting a printer from a drop down. The application then goes out and gets information from the previous record for this printer to auto fill certain fields. On the off chance the previous user did not properly fill out the ending meter reading. As with the record in the illustration below Ending Meter = 0. The current user is asked to provide the current meter reading. Everything works well as far a adding the new record but I would like to use the input begin meter to update the ending meter on the previous record.
Attachment 172787
Attachment 172781
I fell I am real close to getting it but having problems figuring the actual update part. What would be nice would be to actually update through the project dataset Shift_Printers dataset. That way it wouldn’t update anything until they hit the save button but have not seen a example of that anywhere. Most example show. Creating a dataset and updating through that but I haven't been able to get that to work. My code is below. It doesn't work that's why its commented out.
Code:Private Sub cmbSP_Printer_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cmbPrinter.SelectionChangeCommitted
If cmbPrinter.SelectedValue = "FLR" Then
cmbFrom.SelectedIndex = -1
cmbStatus.SelectedIndex = -1
tbBegin_Meter.Text = 0
tbEnd_Meter.Text = 0
Exit Sub
End If
If PrinterBusy() Then
MessageBox.Show("That printer Is busy please select another ")
cmbPrinter.Focus()
If Not AddPntr Then
cmbPrinter.SelectedValue = Save_SP_Printer_Id
Else
cmbPrinter.SelectedValue = -1
End If
Exit Sub
End If
If Not AddPntr Then
If MessageBox.Show("Are you sure you want to change the Printer, This will reset all the current fields ",
"Warning", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) = DialogResult.No Then
cmbPrinter.Focus()
cmbPrinter.SelectedValue = Save_SP_Printer_Id
Exit Sub
End If
End If
' This gets the last known record for the selected printer
Using conn As SqlConnection = New SqlConnection(My.Settings.LaserMaintLogConnectionString)
Try
Dim query As String =
"Select TOP 1 * " &
"FROM Shift_Printers INNER JOIN Shift_Log ON SL_Shift_key = SP_Shift_Key " &
"WHERE SP_Printer_Id = '" & cmbPrinter.SelectedValue & "' " &
" AND SP_LogOut_Date < '" & dtpSL_LogIn_Date.Value & "' " &
"ORDER BY SP_LogOut_Date DESC "
Dim da As SqlDataAdapter = New SqlDataAdapter(query, conn)
Dim dt As DataTable = New DataTable
Dim ds As DataSet = New DataSet
da.Fill(ds, "ShiftPrinter")
If (ds.Tables("ShiftPrinter").Rows.Count > 0) Then
dt = ds.Tables("ShiftPrinter")
Dim BeginMeter As String = dt.Rows(0)("SP_End_Meter").ToString
If String.IsNullOrEmpty(BeginMeter) _
Or BeginMeter = 0 Then
Dim frmGetMeter As New PopGetMeter()
Dim LastBegMeter As String = dt.Rows(0)("SP_Begin_Meter").ToString
Dim LastLogDate As DateTime = dt.Rows(0)("SP_Login_Date").ToString
frmGetMeter.PrinterId = cmbPrinter.SelectedValue
frmGetMeter.PrinterName = GetPrinterName(cmbPrinter.SelectedValue)
frmGetMeter.LoginDate = LastLogDate
frmGetMeter.BeginMeter = LastBegMeter
If DialogResult.OK = frmGetMeter.ShowDialog() Then
If frmGetMeter.tbEndMeter.Text > 0 Then
BeginMeter = frmGetMeter.tbEndMeter.Text
' Code to update the previous log with the entered meter reading
dt.Rows(0)("SP_End_Meter") = BeginMeter
'Dim Command As String = "Update Shift_Printers SET SP_End_Meter = '" & BeginMeter & "'" &
' "WHERE SP_Printer_ID = '" & cmbPrinter.SelectedValue & "' AND SP_SHIFT_Key = '" & dt.Rows(0)("SP_Shift_Key") & "'"
'da.UpdateCommand = Command
'da.Update(ds, "ShiftPrinter")
' Code to update the previous log with the entered meter reading
Else
cmbPrinter.SelectedIndex = 0
MessageBox.Show("Invalid begin Meter reenter Or Select another Printer ")
cmbPrinter.Focus()
Exit Sub
End If
Else
cmbPrinter.SelectedIndex = 0
MessageBox.Show("That printer Is busy please Select another ")
cmbPrinter.Focus()
Exit Sub
End If
End If
tbBegin_Meter.Text = BeginMeter
Dim lastLogout = dt.Rows(0)("SP_LogOut_Date")
dtpSP_LogIn_Date.Value = IIf(dtpSL_LogIn_Date.Value > lastLogout, dtpSL_LogIn_Date.Value, lastLogout)
dtpSP_LogOut_Date.Value = Me.dtpSL_LogOut_Date.Value
cmbFrom.SelectedValue = dt.Rows(0)("SL_Operator")
cmbStatus.SelectedIndex = cmbStatus.FindStringExact(dt.Rows(0)("SP_Status"))
SaveCurrPrinter()
End If
Catch ex As Exception
MessageBox.Show("Error occured! : " & ex.Message)
End Try
End Using
End Sub
