I AM A NEWBIE TO VB.NET. RECENTLY I HAVE STARTED PROGRAMING AN APPLICATION CALLED "OFFICE-MANAGER". THIS IS A PROGRAM WHICH DEALS WITH ACCESS 2003 DATABASE. I HAVE A VARIETY OF OPTIONS LIKE FILE MANAGER, MAIL MANAGER, ETC. I AM STILL AT THE STARTING LEVEL. BASIC USER INTERFACE IS READY AND CURRENTLY I AM WORKING ON WRITING CODES FOR ADDING NEW FILES AND VIEWING THEM IN TWO DIFFERENT FORMS.
MY FIRST PROBLEM IS WITH ADDING NEW FILES TO DATABASE. MY CODE GOES LIKE THIS: -
Imports System.Windows.Forms
Imports System.Data.OleDb
Public Class formcuFiles
Dim dc As OleDbCommand
Dim da As OleDbDataAdapter
Dim cb As OleDbCommandBuilder
Dim conn As OleDbConnection
Dim dt As DataTable
Dim sql as String
Dim i as Integer
Private Sub Add_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click
Dim dateStr As String = dateFormater.customizeDate(Me.dtopen.Value)
conn = New OleDbConnection(My.Settings.officeDataCon)
conn.open()
Dim a1, a2, a3, a4, a5, a6, a7 as String
a1 = fileno.Text.ToString
a2 = ref.Text.ToUpper.ToString
a3 = part.Text.ToUpper.ToString
a4 = sclass.Text.ToUpper.ToString
a5 = subject.Text.ToUpper.ToString
a6 = dateStr.ToUpper.ToString
a7 = remks.Text.ToUpper.ToString
'Whereas fileno, ref, part, sclass, subject, dtopen, remks are Textboxes
'dtopen is a date field
Try
sql = "INSERT INTO CUFILES (FILE_NO, REFERENCE, PART, SCLASS, SUBJECT, DATE_OPENED, REMARKS) VALUES ('" & a1 & "', '" & a2 & "', '" & a3 & "', '" & a4 & "', '" & a5 & "', '" & a6 & "', '" & a7 & "')"
dc = New OleDbCommand(sql, conn)
i = dc.ExecuteNonQuery()
Catch ex As Exception
Trace.WriteLine(ex.ToString)
Finally
dc.Dispose()
conn.Close()
conn.Dispose()
End Try
viewCuFiles.Refresh()
dialogDone.Show()
'this shows a dialog that the requested operation is successfully completed
Me.Close()
End Sub
End Class
IN THE ABOVE CODE EVERYTHING GOES ON CORRECTLY AND EVEN IN THE VIEWCUFILES FORM THE DATE IS SHOWN IN THE LAST ROW. HOWEVER, AFTER CLOSING THE VIEWCUFILES & OPENING IT TWICE, THE NEW DATA VANISHES. ALSO, WHEN I HAVE CHECKED THE MDB FILE, THE NEWLY POSTED DATA IS NOT BEING SAVED THERE. I AM ABSOLUTELY SURE THAT THE CONNECTION IS OK. THE APPLICATION IS DEFINETLY INTERACTING WITH THE DATABASE, HOWEVER, ITS NOT SAVING THE DATA.
MY SECOND PROBLEM WITH GIVING A VALUE TO THE EDIT BUTTONS IN THE FILE VIEW FORM. HERE I AM CREATING NEW BUTTONS WITH NAME 'EDITBTN', I HAVE ALSO WRITTEN A BUTTON CLICK EVENT HANDLER FOR THIS. THE PROBLEM IS THAT FOR EACH ROW A NEW EDITBTN IS ADDED IN THE LAST COLUMN OF THAT ROW. AND EACH TIME THIS BUTTON IS ADDED I WANT THAT BUTTON TO PERFORM AN ACTION, BUT UNFORTUNATELY ONLY THE BUTTON ADDED IN THE LAST ROW IS PERFORMING IT.
I HAVE A VIEWCUFILES FORM IN WHICH I HAVE PUT A TABLELAYOUTPANEL WITH 1 ROW AND 9 COLUMNS. MY CODE WRITTEN BELOW SHOULD PICKUP DATA CORRESPONDING TO EACH COLUMN AND PUT THEM IN THE TABLELAYOUTPANEL AND A NEW ROW SHOULD BE CREATED IF THERE ARE MORE THAN ONE ROW IN THE DATABASE.
I HAVE WRITTEN THE FOLLOWING CODE FOR IT.
Imports System.Data.OleDb
Public Class viewCuFiles
Private dataTable1 As DataTable
Dim fileidStr as String
Friend WithEvents editBtn As System.Windows.Forms.Button
Private Sub viewCuFiles_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
dataTable1 = fetchCUFileList()
For i As Integer = 0 To dataTable1.Rows.Count - 1
For j As Integer = 0 to dataTable1.Columns.Count - 1
Dim lblData As System.Windows.Forms.Label
lbldata = New System.Windows.Forms.Label
If j = 0 Then
lblData.Text = dataTable1.Rows(i)("file_id").ToString
ElseIf j = 1 Then
lblData.Text = dataTable1.Rows(i)("file_no").ToString
ElseIf j = 2 Then
lblData.Text = dataTable1.Rows(i)("reference").ToString
ElseIf j = 3 Then
lblData.Text = dataTable1.Rows(i)("part").ToString
ElseIf j = 4 Then
lblData.Text = dataTable1.Rows(i)("sclass").ToString
ElseIf j = 5 Then
lblData.Text = dataTable1.Rows(i)("subject").ToString
ElseIf j = 6 Then
lblData.Text = dataTable1.Rows(i)("date_opened").ToString
ElseIf j = 7 Then
lblData.Text = dataTable1.Rows(i)("remarks").ToString
End If
TableLayoutPanel2.Controls.Add(lblData, j, i)
fileidStr = dataTable1.Rows(i)("file_id").ToString
Next
editBtn = New System.Windows.Forms.Button
editBtn.Text = fileidStr
TableLayoutPanel2.Controls.Add(editBtn, 9, i)
Next
End Sub
Private Function fetchCUFileList() As DataTable
Dim conn As OleDbConnection
conn = New OleDbConnection(My.Settings.officeDataCon)
conn.Open()
Try
Dim sql As String = "SELECT * FROM CUFILES ORDER BY FILE_ID"
Dim da As OleDbDataAdapter = New OleDbDataAdapter(sql, conn)
Try
da.Fill(dt)
Finally
da.Dispose()
End Try
Return dt
Finally
conn.Close()
conn.Dispose()
End Try
End Function
Private Sub editBtn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles editBtn.Click
MsgBox("You Clicked on = " & fileidStr)
End Sub
End Class
I WANT THE EDIT BUTTON AVAILABLE IN ALL ROWS TO PERFORM AN ACTION I.E. TO OPEN A FORM CALLED UPDCUFILES AND PASS THE FILE_ID THERE SO THAT THE UPDCUFILES FORM SHOWS ME ALL THE DETAILS OF THE PARTICULAR FILE IN TEXTBOXES, WHICH I WANT TO DESIGN IN MY OWN STYLE.
I HAVE TRIED MY LEVEL BEST, BUT I AM UNABLE TO SOLVE THIS ISSUE. IT IS THE MAIN THING WHICH LETS ME GO THROUGH A LONG WAY IN MY APPLICATION.
ANY HELP IN THIS REGARD IS HIGHLY SOLICITED.
THANKS IN ADVANCE.