// 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: