Chinaunix首页 | 论坛 | 博客
  • 博客访问: 337792
  • 博文数量: 71
  • 博客积分: 2129
  • 博客等级: 大尉
  • 技术积分: 835
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-18 16:03
文章分类

全部博文(71)

文章存档

2014年(22)

2013年(18)

2012年(24)

2010年(7)

我的朋友

分类: 数据库开发技术

2014-05-14 14:19:42

因为Access性能不足的问题,我决定将开发的Access数据库,升迁到 Ms sql server

1, 数据导入 
  打开企业管理器,建立一个新的数据库,然后点所有任务,导入数据
  开头总是报错...后来发现,原来是Access数据库有密码的原因,虽然在导入的过程中填了密码,仍然不能导入.
  后来撤销Access数据库的密码,就一切OK了

2, 数据库表的自增量字段的改变
  Access的自增量字段,导入后就成了普通字段了,这时,要设计表,然后将这样的字段其改成"标志"就可以了.

3,数据连接方法的改变
  我用的是 OleDb 类,即 OleDbDataAdapter OleDbConnection OleDbCommand 等
  它的好处是,可以适应不同类型的数据库,你所要改变的,仅是连接串,
  原来Access连接串是
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\evadb.mdb;Persist Security Info=True;Jet OLEDB:Database Password=kkdxm";
Mssql的连接串是
  "Provider=SQLOLEDB.1;Password=mypass;Persist Security Info=False;User ID=sa;Initial Catalog=db_stat;Data Source=192.168.10.12";

4, 数据读取写入的改变
  一个是日期型数据,Access的格式是 #2010-7-31# 来表示,而 mssql 则是使用单引号就可以了 '2010-7-31'
另外,一些函数,比如取当前时间的,有所不同.
  还有,就是原来读出来的不锈钢转子泵数据是 short 型, 现在可能成了 int 型.
  
  总之,Access 到 Mssql 的升迁还算顺利的. 
这个问题被我想得很严重! 结果却是令人喜出望外的.

大家知道,VC写的程序,其控件,我们是可以通过 SendMessage来获取其中的内容,甚至修改其中的内容的.比如说 Edit 控件, ComboBox 控件

这次,大虾米碰到的是C#写的应用程序!我想控制它的组合框(comboBox)里显示的数据,删除其中不需要的几条.首先,用spy++一看,它的类名是 "WindowsForms10.COMBOBOX.app.0.378734a" 我晕啊!这个类名,我到哪去找资料啊!!

经过多方研究,发现这个只是一个纸老虎!它其实本质上还是ComboBox,只是换了一个古怪的名字而已.

下面是一些示例代码,我省掉了定位窗口的过程,直接放的是用SPY++看到的控件窗口句柄

HWND hWnd = (HWND)0x00030DA2;
//FindWindowEx("WindowsForms10.COMBOBOX.app.0.378734a"

int count= ::SendMessage(hWnd,CB_GETCOUNT,0,0);  //获得组合框的字符串的条数

for(int i=0;i {
::SendMessage(hWnd, CB_SETTOPINDEX, i, 0);
::SendMessage(hWnd, CB_SETCURSEL, i, 0);
::SendMessage(hWnd, BM_CLICK, 0, 0);
}

::SendMessage(hWnd,CB_DELETESTRING,0,0); //这一句删除第一行数据

阅读(2697) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~