VFP编程转到C#的方法1022.docx
- 文档编号:14529358
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:20
- 大小:218.95KB
VFP编程转到C#的方法1022.docx
《VFP编程转到C#的方法1022.docx》由会员分享,可在线阅读,更多相关《VFP编程转到C#的方法1022.docx(20页珍藏版)》请在冰点文库上搜索。
VFP编程转到C#的方法1022
VFP编程转到C#的方法
【摘要】在VFP将退出编程开发的历史舞台,本人把VFP的SQL命令用C#语言中重写,并且列出具体相对应的转换方法;在本文中也介绍C#语言对ACCESS数据库操作,读者照着本文很容易把VFP的编程转到C#的编程。
【关键词】VFPC#编程转换方法
2006年VFP9.0发布后,再没有发布新的版本,VFP将退出编程开发的历史舞台,原VFP编程开发的人员将面临选择别的语言进行编程开发。
现本人将自己从VFP编程开发转到C#编程开发的一个入门实例献给VFP编程开发爱好者。
下面我以VFP的《通讯录》这样一个程序给大家讲述转换到C#程序的过程:
(一)、首先在VFP中建立一个如下图的项目工程文件;
数据表结构如下图:
表单的界面设计如下图:
本表单对象的名称是:
Form1;
表单中的【
】控件对应的控件名是:
Command1;
表单中的【
】控件对应的控件名是:
Command2;
表单中的【
】控件对应的控件名是:
Command3;
表单中的【
】控件对应的控件名是:
Command4;
表单中的表格控件对应的控件名是:
Grid1;
表单中的各个Text编辑框控件对应的控件名如上图所标记;
(二)、给表单各个控件添加程序代码具体步骤如下:
①、在表单Form1的Load方法程序中加入如下代码:
***设定初始路径***
cCurrentProcedure=SYS(16,1)
nPathStart=AT(":
",cCurrentProcedure)-1
nLenOfPath=RAT("\",cCurrentProcedure)-(nPathStart)
SETDEFAULTTO(SUBSTR(cCurrentProcedure,nPathStart,nLenofPath))
*******
IFUSED("txldbf")
SELECTtxldbf
ELSE
SELECT0
ENDIF
USE.\txldbfEXCLUSIVE
②、修改表单Form1的Grid1表格的属性和方法程序:
ReadOnly=.T.
RecordSourceType=4-SQL说明
RecordSource=selectxmas姓名,cjas手机,dyas电话,dwas单位,mailas邮箱,qqasQQ号,bzas备注,idFormtxldbfintocursortemptxl
在Grid1表格的AfterRowColChange方法程序中加入如下代码:
LPARAMETERSnColIndex
thisform.text1.Value=temptxl.姓名
thisform.text2.Value=temptxl.手机
thisform.text3.Value=temptxl.电话
thisform.text4.Value=temptxl.单位
thisform.text5.Value=temptxl.邮箱
thisform.text6.Value=temptxl.QQ号
thisform.text7.Value=temptxl.备注
③、在表单Form1的Refresh方法程序中加入如下代码:
thisform.Grid1.RecordSource="select;
xmas姓名,;
cjas手机,;
dyas电话,;
dwas单位,;
mailas邮箱,;
qqasQQ号,;
bzas备注,;
id;
Formtxldbfintocursortemptxl"
④、修改表单Form1的【
】Gommand1命令按钮的Click方法程序
IFLEN(ALLTRIM(thisform.text1.value))==0then
=messagebox("【姓名】不能为空!
",64,"输入值检查...")
ENDIF
insertintotxldbf(xm,cj,dy,dw,mail,qq,bz)VALUES(;
thisform.text1.value,;
thisform.text2.value,;
thisform.text3.value,;
thisform.text4.value,;
thisform.text5.value,;
thisform.text6.value,;
thisform.text7.value)
thisform.refresh
⑤、修改表单Form1的【
】Gommand2命令按钮的Click方法程序
IFLEN(ALLTRIM(thisform.text1.value))==0then
=messagebox("【姓名】不能为空!
",64,"修改提示...")
ENDIF
IFmessagebox("是否保存【姓名】="+ALLTRIM(thisform.text1.value)+"的信息?
",32+1,"修改保存提示...")=1
m.xm=ALLTRIM(thisform.text1.value)
m.cj=ALLTRIM(thisform.text2.value)
m.dy=ALLTRIM(thisform.text3.value)
m.dw=ALLTRIM(thisform.text4.value)
m.mail=ALLTRIM(thisform.text5.value)
m.qq=ALLTRIM(thisform.text6.value)
m.bz=ALLTRIM(thisform.text7.value)
m.id=temptxl.id
UPDATEtxldbfSET;
xm=m.xm,;
cj=m.cj,;
dy=m.dy,;
dw=m.dw,;
mail=m.mail,;
qq=m.qq,;
bz=m.bz;
WHEREid=m.id
thisform.Refresh
ENDIF
⑥、修改表单Form1的【
】Gommand3命令按钮的Click方法程序
IFLEN(ALLTRIM(thisform.text1.value))==0then
=messagebox("【姓名】不能为空!
",64,"输入值检查...")
ENDIF
IFmessagebox("是否删除【姓名】="+ALLTRIM(thisform.text1.value),32+1,"删除警告!
")=1
m.id=temptxl.id
DELETEFROMtxldbfWHEREid=m.id
SELECTtxldbf
pack
thisform.Refresh
ENDIF
⑦、修改表单Form1的【
】Gommand4命令按钮的Click方法程序
thisform.Grid1.RecordSource="select;
xmas姓名,;
cjas手机,;
dyas电话,;
dwas单位,;
mailas邮箱,;
qqasQQ号,;
bzas备注,;
id;
fromtxldbf;
wherexmlike'%"+ALLTRIM(thisform.text8.value)+"%';
intocursortemptxl"
以上是VFP的程序代码,下面我们开始讲述如何把以上的VFP程序转化到C#程序,具体步骤如下:
(三)、首先在D:
\txlmdb目录下建立一个如下图所示的visualstudio2010项目工程文档;
数据表结构如下图(建好后拷贝到D:
\txlmdb\txl\txl\bin\Debug目录中):
表单的界面设计如下图:
本表单对象的名称是:
Form1;
表单中的【
】控件对应的控件名是:
button1;
表单中的【
】控件对应的控件名是:
button2;
表单中的【
】控件对应的控件名是:
button3;
表单中的【
】控件对应的控件名是:
button4;
表单中的表格控件对应的控件名是:
dataGridView1;
表单中的各个textBox编辑框控件对应的控件名如上图所标记;
(四)、给表单各个控件添加程序代码具体步骤如下:
⑴、在表单图形设计界面状态,鼠标指向空白的地方按鼠标的右键选快捷菜单的【查看代码】选项,进入表单的代码设计,如下图所示:
在相对应的地方加入如下的代码:
//在using程序段加入
usingSystem.Data.OleDb;
//在子程序头部加入
OleDbConnectionconn=newOleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;datasource=.\\txlmdb.mdb");
OleDbCommandcmd=newOleDbCommand();
stringGetDateListSQL="selectxmas姓名,cjas手机,dyas电话,dwas单位,mailas邮箱,qqasQQ号,bzas备注,idfromtxlorderbyidDESC";
//在publicForm1()子程序尾部加入
privatevoidGetDateList(stringsql_char)
{
try
{
OleDbDataAdapterada=newOleDbDataAdapter(sql_char,conn);
DataSetds=newDataSet();
ada.Fill(ds);
this.dataGridView1.DataSource=ds.Tables[0].DefaultView;
}
catch(OleDbExceptionex)
{
MessageBox.Show("错误:
"+ex.Message,"系统提示");
}
}
⑵、在表单Form1的Load行为子程序中加入如下代码:
privatevoidForm1_Load(objectsender,EventArgse)
{
this.GetDateList(GetDateListSQL);
}
⑶、在表单Form1的【
】button1命令按钮控件的Click操作子程序中加入如下代码(在表单的图形设计图面下,用鼠标指向【
】button1命令按钮控件双击鼠标的左键,系统会自动生成Click操作子程序并且弹出输入的界面):
privatevoidbutton1_Click(objectsender,EventArgse)
{
#region"数据非空检验"
//非空判断
if(this.textBox1.Text.ToString().Trim()=="")
{
MessageBox.Show("姓名不能为空值!
","增加信息提示");
return;
}
#endregion
#region"给内存变量赋值"
stringstr_xm=this.textBox1.Text.ToString().Trim();
stringstr_cj=this.textBox2.Text.ToString().Trim();
stringstr_dy=this.textBox3.Text.ToString().Trim();
stringstr_dw=this.textBox4.Text.ToString().Trim();
stringstr_mail=this.textBox5.Text.ToString().Trim();
stringstr_qq=this.textBox6.Text.ToString().Trim();
stringstr_bz=this.textBox7.Text.ToString().Trim();
#endregion
stringstrSql="insertintotxl(xm,cj,dy,dw,mail,qq,bz)values"+
"('"+str_xm+"'"+
",'"+str_cj+"'"+
",'"+str_dy+"'"+
",'"+str_dw+"'"+
",'"+str_mail+"'"+
",'"+str_qq+"'"+
",'"+str_bz+"'"+
")";
try
{
conn.Open();//打开数据库连接
cmd.Connection=conn;
cmd.CommandText=strSql.ToString();
cmd.ExecuteNonQuery();//用OleDBCommand对象执行数据库操作
conn.Close();
}
catch(OleDbExceptionex)
{
MessageBox.Show("错误:
"+ex.Message,"增加信息提示");
}
finally
{
this.GetDateList(GetDateListSQL);
MessageBox.Show("提示:
增加信息成功!
","增加信息提示");
}
}
⑷、在表单Form1的【
】button2命令按钮控件的Click操作子程序中加入如下代码(在表单的图形设计图面下,用鼠标指向【
】button2命令按钮控件双击鼠标的左键,系统会自动生成Click操作子程序并且弹出输入的界面):
privatevoidbutton2_Click(objectsender,EventArgse)
{
#region"数据非空检验"
//非空判断
if(this.textBox1.Text.ToString().Trim()=="")
{
MessageBox.Show("姓名不能为空值!
","保存信息提示");
return;
}
#endregion
MessageBoxButtonsbuttonsYesNo=MessageBoxButtons.YesNo;
DialogResultresult;
result=MessageBox.Show(this,"是否要保存【"+this.textBox1.Text.ToString().Trim()+"】这条记录?
","添加信息保存提示",buttonsYesNo,MessageBoxIcon.Asterisk,MessageBoxDefaultButton.Button1);
if(result==DialogResult.Yes)
{
#region"给内存变量赋值"
stringstr_xm=this.textBox1.Text.ToString().Trim();
stringstr_cj=this.textBox2.Text.ToString().Trim();
stringstr_dy=this.textBox3.Text.ToString().Trim();
stringstr_dw=this.textBox4.Text.ToString().Trim();
stringstr_mail=this.textBox5.Text.ToString().Trim();
stringstr_qq=this.textBox6.Text.ToString().Trim();
stringstr_bz=this.textBox7.Text.ToString().Trim();
stringstr_id=this.dataGridView1.CurrentRow.Cells["id"].Value.ToString().Trim();
#endregion
stringstrSql="updatetxlset"+
"xm='"+str_xm+"'"+
",cj='"+str_cj+"'"+
",dy='"+str_dy+"'"+
",dw='"+str_dw+"'"+
",mail='"+str_mail+"'"+
",qq='"+str_qq+"'"+
",bz='"+str_bz+"'"+
"whereid="+str_id;
try
{
conn.Open();//打开数据库连接
cmd.Connection=conn;
cmd.CommandText=strSql.ToString();
cmd.ExecuteNonQuery();//用OleDBCommand对象执行数据库操作
conn.Close();
}
catch(OleDbExceptionex)
{
MessageBox.Show("错误:
"+ex.Message,"保存信息提示");
}
finally
{
this.GetDateList(GetDateListSQL);
MessageBox.Show("提示:
保存信息成功!
","保存信息提示");
}
}
}
⑸、在表单Form1的【
】button3命令按钮控件的Click操作子程序中加入如下代码(在表单的图形设计图面下,用鼠标指向【
】button3命令按钮控件双击鼠标的左键,系统会自动生成Click操作子程序并且弹出输入的界面):
privatevoidbutton3_Click(objectsender,EventArgse)
{
MessageBoxButtonsbuttonsYesNo=MessageBoxButtons.YesNo;
DialogResultresult;
result=MessageBox.Show(this,"是否要删除【"+this.textBox1.Text.ToString().Trim()+"】这条记录?
","添加信息保存提示",buttonsYesNo,MessageBoxIcon.Asterisk,MessageBoxDefaultButton.Button1);
if(result==DialogResult.Yes)
{
#region"给内存变量赋值"
stringstr_id=this.dataGridView1.CurrentRow.Cells["id"].Value.ToString().Trim();
#endregion
stringstrSql="deletefromtxlwhereid="+str_id;
try
{
conn.Open();//打开数据库连接
cmd.Connection=conn;
cmd.CommandText=strSql.ToString();
cmd.ExecuteNonQuery();//用OleDBCommand对象执行数据库操作
conn.Close();
}
catch(OleDbExceptionex)
{
MessageBox.Show("错误:
"+ex.Message,"删除信息提示");
}
finally
{
this.GetDateList(GetDateListSQL);
MessageBox.Show("提示:
删除记录成功!
","删除信息提示");
}
}
}
⑹、在表单Form1的【
】button4命令按钮控件的Click操作子程序中加入如下代码(在表单的图形设计图面下,用鼠标指向【
】button4命令按钮控件双击鼠标的左键,系统会自动生成Click操作子程序并且弹出输入的界面):
privatevoidbutton4_Click(objectsender,EventArgse)
{
#region"给内存变量赋值"
stringstr_select=this.textBox8.Text.ToString().Trim();
this.textBox8.Text="";
#endregion
stringstrSql="selectxmas姓名,cjas手机,dyas电话,dwas单位,mailas邮箱,qqasQQ号,bzas备注,idfromtxl"+
"wherexmlike'%"+str_select+"%'orderbyidDESC";
this.GetDateList(strSql);
}
⑺、在表单Form1的dataGridView1表格控件的CellClick鼠标操作子程序中加入如下代码(在表单的图形设计图面下,选中表格控,再从属性窗口中选CellClick鼠标操作子程序,用鼠标左键双击CellClick选项,系统会自动生成CellClick鼠标操作子程序并且弹出输入的界面):
privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse)
{
if(e.RowIndex.Equals(-1))
{
MessageBox.Show("提示:
请点击您要选择的内容!
【头部】","系统提示");
}
elseif(e.RowIndex { this.dataGridView1.Rows[e.RowIndex].Selected=true; #region"给对象赋值" this.textBox1.Text=this.dataGridView1.CurrentRow.Cells["姓名"].Value.ToString().Trim(); this.textBox2.Text=this.dataGridView1.CurrentRow.Cells["手机"].Value.ToString().Trim(); this.textBox3.Text=this.dataGridView1.CurrentRow.Cells["电话"].Value.ToString().Trim(); this.textBox4.Text=this.dataGridVi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 编程 转到 C# 方法 1022