- // Learn more about F# at http://fsharp.net
- //specifies the memory location of the class files
- //that will be needed in our application
- open System.Collections.Generic
- open System
- open System.Windows.Forms
- open System.ComponentModel
- open System.Data
- open System.Drawing
- open System.Data.OleDb
- //creates a font
- let ffont=new Font("Verdana", 9.75F,FontStyle.Regular, GraphicsUnit.Point)
- //creates a connection object
- let oleconn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
- Data Source=C:\Documents and Settings\Station03\My Documents\dbEmployee.mdb")
- //creates an OleDbDataAdapter
- let dataadpter = new System.Data.OleDb.OleDbDataAdapter("Select * from tblEmployee", oleconn)
- //generates a dataset
- let dataset11 = new DataSet()
- //fills the dataset with recod values
- dataadpter.Fill(dataset11,"tblEmployee")|>ignore
- //creates a form
- let dataform = new Form(Text="Search a Record Value",AutoScaleDimensions=new System.Drawing.SizeF(60.0F, 13.0F),ClientSize=new System.Drawing.Size(400, 360),StartPosition=FormStartPosition.CenterScreen)
- //creates our controls
- let exitbutton=new Button(Text="Exit", Location=new System.Drawing.Point(300, 320))
- let searchbutton=new Button(Text="Search", Location=new System.Drawing.Point(220, 320))
- let label1=new Label(Text="Enter the employee number:",Location=new System.Drawing.Point(0, 10),AutoSize=true)
- let label2=new Label(Text="Empno:",Location=new System.Drawing.Point(0, 50),AutoSize=true)
- let label3=new Label(Text="Firstname:",Location=new System.Drawing.Point(0,100),AutoSize=true)
- let label4=new Label(Text="Lastname:",Location=new System.Drawing.Point(0,150),AutoSize=true)
- let empnotext=new TextBox(Location=new System.Drawing.Point(200,10))
- let emplabel=new Label(Location=new System.Drawing.Point(100,50),BorderStyle=BorderStyle.FixedSingle)
- let fnamelabel=new Label(Location=new System.Drawing.Point(100,100),BorderStyle=BorderStyle.FixedSingle)
- let lnamelabel=new Label(Location=new System.Drawing.Point(100,150),BorderStyle=BorderStyle.FixedSingle)
- //creates a datagrid
- let datagrid = new DataGridView(ColumnHeadersHeightSizeMode=DataGridViewColumnHeadersHeightSizeMode.AutoSize,Size=new System.Drawing.Size(300, 120),Location=new System.Drawing.Point(10, 180))
- //creates a grid control colums
- let chrempnocol=new DataGridViewTextBoxColumn()
- let chrfnamecol=new DataGridViewTextBoxColumn()
- let chrlnamecol=new DataGridViewTextBoxColumn()
- //adds the columns into our datagrid
- datagrid.Columns.Add(chrempnocol)|>ignore
- datagrid.Columns.Add(chrfnamecol)|>ignore
- datagrid.Columns.Add(chrlnamecol)|>ignore
- datagrid.DataSource <- dataset11.Tables.["tblEmployee"]
- //assingns the font to our form
- dataform.Font<-ffont
- //links our fieldname to each grid
- //and change its header text
- chrempnocol.DataPropertyName<-"chrempno"
- chrempnocol.HeaderText<-"Employee No."
- chrfnamecol.DataPropertyName<-"chrfname"
- chrfnamecol.HeaderText<-"First Name"
- chrlnamecol.DataPropertyName<-"chrlname"
- chrlnamecol.HeaderText<-"Last Name"
- //add the datagrid to our form
- dataform.Controls.Add(datagrid)
- //adds the controls to our form
- dataform.Controls.Add(exitbutton)
- dataform.Controls.Add(searchbutton)
- dataform.Controls.Add(label1)
- dataform.Controls.Add(label2)
- dataform.Controls.Add(label3)
- dataform.Controls.Add(label4)
- dataform.Controls.Add(empnotext)
- dataform.Controls.Add(emplabel)
- dataform.Controls.Add(fnamelabel)
- dataform.Controls.Add(lnamelabel)
- //binds the fieldnames to our label
- emplabel.Text<-Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(0).Item(0))
- fnamelabel.Text<-Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(0).Item(1))
- lnamelabel.Text<-Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(0).Item(2))
- searchbutton.Click.Add(fun search->
- //handles the row index number
- let mutable introws=0
- //determines if the record has been found or not
- let mutable blnfound=false
- //handles the total number of records
- let mutable inttotrec=Convert.ToInt32(dataset11.Tables.["tblEmployee"].Rows.Count)
- //handles the data inputted by the user
- let strtext=Convert.ToString(empnotext.Text)
- //while no match is found and the end of the file has not been reached
- while((blnfound=false) && (introws<=inttotrec-1)) do
- let strempnum=Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(introws).Item(0))
- //compare the data inputted in the textbox to the employee number in our table
- //if they are equal, display the match record
- if strtext.ToUpper()=strempnum.ToUpper() then
- blnfound<-true
- emplabel.Text<-Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(introws).Item(0))
- fnamelabel.Text<-Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(introws).Item(1))
- lnamelabel.Text<-Convert.ToString(dataset11.Tables.["tblEmployee"].Rows.Item(introws).Item(2))
- //compare to the next record while no match is found
- introws<-introws + 1
- //if no match is found, display this
- if blnfound=false then
- MessageBox.Show("Record not found.","Search a Record Value",MessageBoxButtons.OK,MessageBoxIcon.Information)|>ignore)
- //when the exit button is clicked
- exitbutton.Click.Add(fun exit->
- //close the form and dataconnection
- dataform.Close()
- oleconn.Close())
- //executes our application
- Application.Run(dataform)
Since Visual F# is very particular with the code indention, I posted below the screenshot of our code in the while loop section.
Here's what it should look like if you click the run icon: