VB6.0å¤æ¥æ°æ®åºç访é®
大家ç¥éï¼VB6.0æå¼äººæ³¨ç®çç¹ç¹ï¼ä¹æ¯å
¶æ令ç¨åºåå
³å¿çå°æ¹ï¼å°±æ¯å®è®¿é®å¤ç§æ°æ®åºç强大åè½ãVBä¸å°éMS Accessæ°æ®åºç§°ä¸ºå¤æ¥æ°æ®åº(External Database)ï¼å¦dBASEãFoxProãODBCçãVB6.0ä¸ä½¿ç¨æ°æ®æ§å¶è®¿é®å¤æ¥æ°æ®åºå访é®Accessæ°æ®åºç±»ä¼¼ï¼è¿éä¸åèµè¿°ã访é®å¤æ¥æ°æ®åº(以dBASE为ä¾)大è´å¯å为以ä¸å æ¥ï¼
ä¸ï¼å»ºç«ä¸ä¸ªAccessåæ°æ®åºï¼å¹¶å¨æ°æ®åºä¸å建æ°è¡¨âå³ä¸ºéå 表ãéè¿è®¾ç½®
éå 表çåå±æ§å¼ï¼ä½¿å
¶ä¸ä½ æè¦è®¿é®çæ°æ®åºå»ºç«é¾æ¥å
³ç³»ãç¨åºä»£ç å¦ä¸ï¼
DimDbasDatabase
DimTdasNewTabledef
SetDb=OpenDatabase("MYDB.MDB")
Td.Connect="dBASE:DATABASE=c:\DATADIR"
Td.SourceTableName="AU THOR"
Td.Name="dBASEAuthorTable"
Db.tabledefsAppendTd
Db.close
äºï¼è®¾ç½®INIæ件路å¾ãå¨VBçç¨åºä¸ä½¿ç¨äºè®¿é®å¤æ¥æ°æ®åºæä½ï¼å°åºç¨ç¨åºçæEXEæ件åï¼å¿
é¡»æä¾ä¸ä¸ªINIæ件ãè¥æ¾ä¸å°è¿ä¸ªINIæ件ï¼å°ä¼å¯¼è´ä¸è½è®¿é®æ°æ®åºï¼å¹¶åºç°âNOTFOUNDIN STOLLABKISAMSâçé误信æ¯ã设置INIæ件路å¾åï¼VBçç¨åºä¼å¨WINDOWSåç®å½ä¸å¯»æ¾ä¸åºç¨ç¨åºååçINIæ件ã设置INIæ件路å¾ä»£ç 为ï¼
SetDataAccessOption1,âPath\Filenameâ
ä¸ï¼ç¼è¾.INIæ件å¯å¯¹ä¸åç§ç±»çæ°æ®åºè¿è¡è®¾ç½®ï¼ä¸é¢ä¸ºä¸INIæ件代ç ï¼
ãOptionsã
SystemDB=c: \MyPATH\SYSTEM.MDA
ãISAMã
PageTimeout=5
MaxBufferSize=128
LockRetry=20
CommitLockPetry=20
ReadAheadPages=16
ãInstallableISAMsã
Paradox3.x=C:\VB\pdx110.DLL
FoxPro2.0=C:\VB\xbs110.DLL
FoxPro2.5=C:\VB\pdx110.DLL
dBASE=C:\VB\pdx110.DLL
dBASE=C:\VB\pdx110.DLL
Btrieve=C:\VB\btrv110.DLL
ãParadoxISAMã
PageTimeout=600
ParadoxUsername=BaiUser
ParadoxNetPath=P:\PDXDB\
CollatingSeguence=Ascii
ãdBASEã
centry=off
Data=American
Mark=47
Deleted=on
è¿æ ·éè¿è®¿é®æ°æ°æ®åºMYDB.MDBå表âDBASEAU THORTABKâå³å¯è®¿é®ä½ æè¦è®¿é®çå¤æ¥æ°æ®åºäºã
使ç¨è¿ç§æ¹æ³è®¿é®å¤æ¥æ°æ®åºåºè¯¥æ³¨æçæ¯ï¼éå 表å¨æå å°çæ°æ®åºä¸åªæ¯å»ºç«äºä¸ä¸ªé¾æ¥å
³ç³»ï¼è¡¨çå®é
æå¨ï¼ä»ç¶åå¨äºåæ°æ®åºä¸ï¼è¯¥è¡¨å¨æéå å°çæ°æ®åºä¸è¢«å é¤æ¶ï¼åªæ¯å æäºé¾æ¥å
³ç³»ï¼å®é
ç表并没æ被å é¤ã
VBæ°æ®åºè®°å½æ¥è¯¢æ¹æ³
大家ç¥éï¼å¨VB6.0ä¸è¿è¡æ°æ®åºè®°å½çå®é
æ¥è¯¢æä½ï¼å¿
éæ ¹æ®æå¼æ°æ®åºçæ¹å¼æ¥ç¡®å®ã以VB3ï¼0为ä¾ï¼æ°æ®é对象æTableãDynasetãSnapshotä¸ç§ï¼ä¸é¢å ç§æ¥è¯¢æ¹æ³åå«éç¨äºä»¥ä¸é¢ä¸åç对象æ¹å¼æå¼çæ°æ®åºã
1ï¼ç¨SQLæ¥è¯¢ãSQLæ¯ä¸ç§ç»æåæ°æ®æ¥è¯¢è¯è¨ï¼SQLä¹åªè½éç¨DynasetåSnapshotæ°æ®é对象ï¼è¿ç§æ¹æ³æ¯æ ¹æ®SQLæ¡ä»¶çæä¸ä¸ªæ°æ®é对象ãä¾å¦ï¼
sï¼âselect * from demo where å§å like âå*ââ
set dyï¼db.createDynasetï¼sï¼
ã注ãï¼æ¬æä¸çdb为æ°æ®åºå¯¹è±¡ï¼æå¼æ¹å¼ä¸ºï¼
ä¾å¦ï¼set dbï¼OpenDatabaseï¼âCï¼ï¼¼VBï¼¼SAMPLEï¼MDBâï¼ã
2ï¼ç¨FILTERå±æ§æ¥è¯¢ãFilterå±æ§æ¯DynasetåSnapshot对象æå
·å¤çï¼æ以ä¹åªè½éç¨äºè¿ä¸¤è
ï¼ä¸è½ç¨äºTableãFilteræ¯ç¨æ¥è¿æ»¤æ°æ®çï¼åªè¦æ们ç»å®è¿æ»¤æ¡ä»¶å°±å¯ä»¥å°æéçè®°å½çéåºæ¥ãéè¦è¯´æçæ¯ï¼æ们éè¦å°ä»¥Filterå±æ§çéåºæ¥çæ°æ®éæå¼æè½å¯¹å
¶æä½ãä¾å¦ï¼
set dy1ï¼dbï¼createDynasetï¼âdemoâï¼
dy1ï¼filterï¼âå§å like âå*ââ
set dy2ï¼dy1ï¼createDynasetï¼ï¼
3ï¼ç¨FINDæ¹æ³æ¥è¯¢ãFINDéç¨äºDynasetåSnapshot对象ï¼æFindfirståFindnext两个æ¹æ³ï¼æ¯æ¬¡æ¥è¯¢å°ä¸ä¸ªè®°å½ãä¾å¦ï¼
set dyï¼db.createDynasetï¼âdemoâï¼ï¼
sï¼âå·¥èµï¼160 andå§å like âåï¼ââ
dy.findfirst s
dy.findnext s
4ï¼ç¨SEEKæ¹æ³æ¥è¯¢ãè¿ç§æ¹æ³åªä½¿ç¨äºä»¥Opentableæ¹å¼æå¼çTableç±»åçæ°æ®è¡¨ï¼èä¸å¨æ¥è¯¢ä¹åå¿
é¡»è¦ä»¥æ¥è¯¢å段建ç«ç´¢å¼æ件ï¼ç±äºå·²å»ºç«äºç´¢å¼æ件ï¼æ以æ¥è¯¢é度å¾å¿«ï¼è¿ç§æ¹å¼çæ¥è¯¢ç»ææ¯å°æé移å°ç¬¦åæ¡ä»¶ç第ä¸ä¸ªè®°å½ãä¾å¦ï¼
set tbï¼db.opentableï¼"demo"ï¼
tb.indexï¼"nameindexâ
tb.seek "ï¼"ï¼"å¼ ä¸"ã
è°è°VB6.0çæ°æ®åºç¼ç¨æ¹å¼
VB6.0çæ°æ®åºç¼ç¨æ¹é¢æå
¶é¾æç¨åº¦å¯å为ä¸ç±»(ç±æå°é¾);
1.使ç¨æ°æ®åºæ§å¶é¡¹åç»å®æ§å¶é¡¹
2.使ç¨æ°æ®åºå¯¹è±¡åéè¿è¡ç¼ç¨
3.ç´æ¥è°ç¨ODBC2.0API
å¨ä½¿ç¨VBè¿è¡æ°æ®åºç¼ç¨æ¶,é常,ä¼é¦å
éæ©ä¸ç§åºæ¬æ¹æ³ä¹ä¸æ¥è¿è¡æ°æ®åºåºç¨ç¨åºçæ¹æ¡è®¾è®¡, ç°å¨å°±å°ä»¥ä¸ä¸ç§è®¾è®¡æ¹æ³çéåºèå´åå
¶ä¼ç¼ºç¹è¿è¡ä¸ä¸ªæ¯è¾ã
<1>. 使ç¨æ°æ®åºæ§å¶é¡¹åç»å®æ§å¶é¡¹
1. ä¼ç¹
�å®æ¯ä¸ç§æ¹æ³ä¸ç¼ç éæå°ç
�ä¸å¿
äºè§£CDBC2.0APIçç»è
�å
许使ç¨æ åçå第ä¸æ¹ååå¶è®¢çæ§å¶é¡¹
�ç®åäºé误å¤ç
�æ¯æææçå¨æéæ¹æ³åå±æ§
2. 缺ç¹
�ä¸è½ååå¿«ç
§å¯¹è±¡(snapshop)对象æè¡¨æ ¼å¯¹è±¡(é½å±äºè®°å½é对象)
�ä¸è½ååæ°æ®åºéå,æ¯å¦è¡¨å®ä¹(TableDefs)å段(Fieds),ç´¢å¼( Indexes)åæ¥è¯¢å®ä¹(QueryDefs)
�åªè½ååé¨åODBC2.0管çå½æ°
�ä¸è½è¿è¡çæ£çäºå¡å¤ç
�æéçé误è¯æåè½
3. åºç¨
�对ä¸å°è§æ¨¡çæ°æ®åºè¡¨(é常å°äºä¸åæ¡è®°å½)åªè¿è¡ç®ç« çæµè§æä½
�åºæ¬SQLæ¥è¯¢æ对åºçç»æéé¿åº¦æé(é常ç»æéçè®°å½æ°å°äºä¸ç¾, è¿äºè®°å½ä»ä¸ä¸ªæ两个é¿åº¦æéç表ä¸æ£ç´¢åºæ¥)
�åºç¨ç¨åºçæ°æ®è¾å
¥/è¾åºé¡¹è¾å°(é常åªæ¶åä¸ä¸ªæ两个é¿åº¦æéç表ã并ä¸è¡¨ä¸çå段æ°å¨10个左å³ä¸ä¸å
·æå
³ç³»å®æ´æ§éå¶
<2>. 使ç¨æ°æ®åºå¯¹è±¡åéè¿è¡ç¼ç¨
1. ä¼ç¹
�å¯ä»¥å¨ç¨åºä¸ååODBC2.0ç管çå½æ°
�å¯ä»¥æ§å¶å¤ç§è®°å½éç±»å:DynasetãSnapshopåTableè®°å½éå对象
�å¯ä»¥åååå¨è¿ç¨åæ¥è¯¢å¨ä½
�å¯ä»¥ååæ°æ®åºéå对象,ä¾å¦TableDefsãFieldsãIndexesåQueryDefså
·æçæ£çäºå¡å¤çè½å , å
æ¬å¯å¨äºå¡ ( Begintrans) ã æ交äºå¡(CommitTrans)ååæ»äºå¡(Rollback)
2. 缺ç¹
�æ¯ä½¿ç¨æ°æ®æ§å¶é¡¹çæ¹æ³ç¼ç éè¾å¤§
�åªè½è¿è¡é´æ¥çé误å¤çåé误æ¢å¤
�对æ¯ä¸ªæ°æ®åºæä½æ²¡æç»ç²åº¦çæ§å¶
�对ç»æéåå
å«ç»æéçå
丰èµæºçæä½åå°éå¶
�åç´æ¥ä½¿ç¨ODBC2.0APIå½æ°çæ¹æ³ç¸æ¯æ§è½è¾ä½
3. åºç¨
�åºç¨ç¨åºéè¦å¨æ§è¡æé´å¨æå°å»ºç«è¡¨ãå段åç´¢å¼
�åºç¨ç¨åºæ¶ååæ¥æ´æ°å å¼ è¡¨(ä½å¨é»è¾ä¸ä¿æä¸è´æ§)çå¤æäºå¡
�åºç¨ç¨åºä½¿ç¨ç»æéèä¸æ¯Dynasetççªä½(FORMS),ä¾å¦SnapshotsæTables,è¿éæ¯è®¾è®¡è¦èèçå
³é®
�åºç¨ç¨åºç表é常大,å¤äº1000æ¡è®°å½
�åºç¨ç¨åºå
·æå¤æçæ°æ®è¾å
¥/è¾åºé¡¹,å®æ¶å许å¤å
é¨ç¸å
³çå段并ä¸å
æ¬æ°æ®åºåç
§å®æ´æ§æ ä¸è´æ§è§å
�åºç¨ç¨åºéè¦æ§è¡ä¸äºé¢å¤çæä½å对ç»æéçæ¥è¯¢åå¤ç, å°¤å
¶æ¯éè¦å¾é«çæ°æ®æ ¼å¼åæ¾ç¤º
�åºç¨ç¨åºéè¦å©ç¨å¤æçODBC管çåè½ä»¥éæ©ãé
ç½®ãæ ¡éªå建ç«åç§æ°æ®æº
�åºç¨ç¨åºéè¦å¨æ§è¡æé´âæ¾ç¤ºâæ°æ®åºçåºæ¬ç»æ
�åºç¨ç¨åºéè¦ä½¿ç¨å¤æçå¤ç ç´¢å¼æ¹å¼æ¥æ£ç´¢ææ´æ°è®°å½
<3>. ç´æ¥è°ç¨ODBC2.0API
1. ä¼ç¹
�å¯ä»¥ç´æ¥åä¸ç»æéçå¼åã管çåè§èå
�对ç»æé游æ æä¾äºæ´å¤çæ§å¶,并ä¸æä¾äºæ´å¤ç游æ ç±»ååæ§è¡å¨ä½
�è½å¤ç¡®å®ODBC驱å¨ç¨åºåSQLçä¸è´æ§çº§å«
�å¯ä»¥æ´å¥½å°æ§å¶Windowsçæ§è¡è°åº¦åèµæºå©ç¨
�å
¶ä»æ¹é¢åå
¶ä»æ¹æ³å·®ä¸å¤,å æ¤è¿ç§æ¹æ³å¾å¯è½å
·ææ好çæ§è½
2. 缺ç¹
�è¾å
¶ä»ä¸¤ç§æ¹æ³éè¦å¤§éç代ç
�代ç å¤æ并ä¸è¦æ±ç¨åºåå
·æç¼å¶APIè°ç¨çç»éª
�å¨ç½ç»ä¸Visual Basicè¿è¡æé´åºçé误å¤ç缺ä¹å®å
¨æ§,å æ¤ä»£ç è¿è¡æé´åºç°çé误æé æçåæä¼é常严é
3. åºç¨
�å¦æç³»ç»ç¯å¢ä¸ºå®¢æ·æº/æå¡å¨æ¨¡å¼ä¸ç大è§æ¨¡å¤ç¨æ·ç¯å¢,é£ä¹åºç¨ç¨åºå¿
é¡»é½è½å¤åç¡®å°è§£å³å¯è½åºç°çç³»ç»é误å失败
�åºç¨ç¨åºå¼ºè°èµæºä½¿ç¨,è¿éå¦ä½å¯¹å
åã ç½ç»æå¡å¨èµæºè¿è¡ç´æ¥æ§å¶æ¯é¦è¦çèèå ç´
�åºç¨ç¨åºä½¿ç¨è¶
大è§æ¨¡æ°æ®åº,ä¾å¦æ°æ®åºè¡¨å¯è½å
å«å ä¸æå åä¸æ¡è®°å½
çæ£å é¤æ°æ®åºçè®°å½
大家ç¥éï¼ç¼ºçæ
åµä¸ï¼VB å é¤è®°å½åªæ¯æè®°å½ä½ä¸ä¸ªå é¤æ å¿èå·²ï¼å¹¶æ²¡æçæ£å é¤ãè¦çæ£å é¤è®°å½ï¼ä½ å¯ä»¥ä½¿ç¨ VB æä¾ç以ä¸æ¹æ³ï¼BeginTransãCommitTransãRollBackãå
¶ä¸ï¼BeginTrans æ¹æ³å¼å§è®°å½æ°æ®åºçåå¨ï¼CommitTrans æ¹æ³ç¡®è®¤æ°æ®åºçåå¨ï¼è RollBack æ¹æ³åå¯ä»¥æ¢å¤è¢«å é¤æä¿®æ¹çè®°å½ãå®ä»¬å¯ä»¥åµå¥ä½¿ç¨ãå æ¤ï¼è¦æ¢å¤è¢«å é¤çè®°å½ï¼åºè¯¥å¨ä½¿ç¨ BeginTrans æ¹æ³ä¹ååä½¿ç¨ CommiTrans æ¹æ³ä¹åä½¿ç¨ RollBack æ¹æ³ã
ä¸ç¨ DATA æ§ä»¶æä½æ°æ®åºæ件
大家ç¥éï¼å¨ VB ä¸å¦æä½¿ç¨ DATA æ§ä»¶è®¿é®æ°æ®åºï¼é£ä¹ç¨åºæ§è¡å°±å¿
é¡»è¦ä¸äºå¤§å DLL æ¯æãè¿å¯¹äºå®è£
ççåæ¾æ¯ä¸ä¸ªå¤§é®é¢ãé£ä¹ï¼å¨ VB ä¸è½ä¸è½ä¸ç¨ DATA æ§ä»¶è®¿é®æ°æ®åºå¢ï¼
å¨ VB ä¸ä¸ç¨ DATA æ§ä»¶è访é®æ°æ®åºï¼åªæä¸æ³ï¼å°æ°æ®åºæ件å½æ2è¿å¶æ件æå¼ãä½æ¤æ³æ大å°é¾å°±æ¯ä½ å¿
é¡»äºè§£æ°æ®åºæ件çç»æå½¢å¼ã
æ¯å¦ï¼FoxBaseçDBFæ件ï¼æä¸äºè§£å
¶å®æ°æ®åºçæ件ç»æï¼å¤§å®¶å¯ä»¥å»æ¥æ¥ï¼ï¼å®ç±è®°å½å¤´åè®°å½ææãèè®°å½å¤´åç±ä¸¤é¨åææï¼è®°å½å¤´=æ°æ®åºè¯´æ+å段说æãä¸é¢ååº FoxBase æ°æ®åºè¯´æï¼ FoxBase æ°æ®åºè¯´æ èµ·å§å°å åèæ° å«ä¹
1 1 FoxBase æ°æ®åºæ件æ å¿
2-4 3 æåä¸æ¬¡ä¿®æ¹æ¥æï¼3个åèåå«ä¸ºå¹´ãæãæ¥
5-8 4 æ件记å½æ»æ°
9-10 2 è®°å½å¤´é¿åº¦
11-12 2 æ¯ä¸ªè®°å½é¿åº¦
13-22 20 æªä½¿ç¨
ä¸é¢ååºå段说æï¼æ¯ä¸ªåæ®µç± 32 个åèææã
å段说æ èµ·å§å°å åèæ° å«ä¹
1-11 11 å段å称
12 1 å段类åï¼åå«ä¸ºCãNãDãLçï¼
13-16 4 该å段å¨æ件ä¸å°å
17 1 å段é¿åº¦
18 1 å°æ°ä½æ°
19-32 14 æªä½¿ç¨
ç¥éäºå段信æ¯è¯´æï¼å°±å¯ä»¥ä½¿ç¨ å¤ååé + 2è¿å¶æ件 æ¥æä½æ°æ®åºäºã
Text 转æ¢ä¸º Access MDB
Text æ件类åå¨å¾å¤è½¯ä»¶ä¸é½ä¸ºä¸è¬åºç¨ç¨åºä¸æ°æ®åºä¹é´æ¶èµ·ä¸åº§æ¡¥æ¢ãä½ å¯ä»¥ä½¿ç¨ Text ISAM 驱å¨ç¨åºå SQL æ¥æ Text æ件转æ¢æ Access MDB æ°æ®åºæ件ï¼é¦å
ï¼ä¸ºææ¬æ件å建ä¸ä¸ª SCHEMA.INI æ件ãç¶åï¼ä½ å¯ä»¥ä½¿ç¨ä¸é¢ç代ç æ¥å®ç°è½¬æ¢ï¼
Dim db As Database, tbl as TableDef
Set db = DBEngine.CreateDatabase(App.Path & "\mymdb.mdb", dbLangGeneral, dbVersion_0)
Set tbl = db.CreateTableDef("Temp")
tbl.Connect = "Text;database=c:\vbpj\data"
tbl.SourceTableName = "Customer#txt"
db.TableDefs.Append tbl
db.Execute "Select Temp.* into NewTable from Temp"
db.TableDefs.Delete tbl.Name
db.Close
Set tbl = Nothing
Set db = Nothing
éä½æ°æ®åºä¸ç表
æè¡¨è¾¾å¼ True=False æ¾å°è¡¨ç ValidationRule å±æ§å°±è½éä¸ã HardLockTable?å®ç°äºè¯¥åè½ã
声æ
Public MyDB As Database
Dim Dummy As Integer
å½æ°
Function HardLockTable (ByVal whichAction As String,?ByVal aTable As String) As Integer
On Error GoTo HardLockTableError
HardLockTable = True
Select Case whichAction
Case "Lock"
MyDB.TableDefs(aTable).ValidationRule = "True=False"
MyDB.TableDefs(aTable).ValidationText =?"This table locked via " & ?"ValidationRule on " & Now
Case "UnLock"
MyDB.TableDefs(aTable).ValidationRule = ""
MyDB.TableDefs(aTable).ValidationText = ""
Case "TestThenUnLock"
If MyDB.TableDefs(aTable).ValidationRule = "True=False" Then
MyDB.TableDefs(aTable).ValidationRule = ""
MyDB.TableDefs(aTable).ValidationText = ""
End If
End Select
HardLockTableErrorExit:
'subFlushDBEngine
'optional, see next suggestion
Exit Function
HardLockTableError:
HardLockTable = False
MsgBox Error$ & " error " & "in HardLockTable trying " & "to " & whichAction & " " & aTable
Resume HardLockTableErrorExit
End Function
使ç¨ä¾å
'ä¸é
Dummy = HardLockTable("Lock", "TestTable")
' å¼é
Dummy = HardLockTable("UnLock", "TestTable")
å
³éææçæ°æ®è¿æ¥
å¦æå¨ä»£ç ä¸ä½¿ç¨äºæ°æ®æ§ä»¶å¦ DAOï¼ RDOï¼ æ ADOï¼ å¨éåºæ¶åºè¯¥å
³éæææå¼ç recordsetï¼ databaseï¼å workspace ã è½ç¶å¯¹è±¡è½èªå¨æ³¨éï¼ ä½æ¯æ°æ®è¿æ¥ä¸ä¼é©¬ä¸æå¼ï¼ å¯è½ä¼å¯¼è´ä¸äºå
åä¸è½è¢«ç³»ç»éæ°åé
ã
ä¸é¢ç代ç å¯ä»¥å
³éæææå¼ç DAO workspaceï¼ å¹¶éæ¾æå çå
åã
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
'
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
'
For Each ws In Workspaces
For Each db In ws.Databases
For Each rs In db.Recordsets
rs.Close
Set rs = Nothing
Next
db.Close
Set db = Nothing
Next
ws.Close
Set ws = Nothing
Next
'
End Sub
å¦ä½å é¤FoxProæ°æ®åºçæ°æ®?
ç¨VB对FOXPROæ°æ®åºæä½,ç»å¸¸ä¼éå°è¿æ ·ä¸ä¸ªé®é¢: åªè½å¯¹è®°å½è¿è¡DEL,ä¹å°±æ¯å¨è¯¥æ¡è®°å½ä¸æä¸ä¸ªå é¤æ è®°,ä½ä¸è½ 象å¨æ°æ®åºä¸é£æ ·,ç¨"PACK"æè¿æ¡è®°å½çæ£å é¤.å½è®°å½æ°è¾å¤æ¶, ç¨DBGRIDçæ§ä»¶åçç¨åºé½ä¼åºé.该ææ ·åå¢?å
¶å®,VBä¸æ æ³å¯¹DBFæ件è¿è¡PACKãåªè½æISAMç设置 Deleted设为Onãè¿æ ·ç¸å½äºFoxProçSET DELETED ONãä¸ä¿¡ä½ å¯ä»¥è¯ä¸è¯ã
VB访é®æ°æ®åºæ¹æ³ç®ä»
Visual Basicï¼ç®ç§°VBï¼æ¯ä¸ç§å¯è§åçãäºä»¶é©±å¨åçWindowsåºç¨ç¨åºå¼åå·¥å
·ï¼å®å¨GUI设计ãç»å¾ãå¶è¡¨ãè¿ç®ãéä¿¡åå¤åªä½å¼åæ¹é¢é½å
·æç®åæè¡ãåè½å¼ºå¤§çä¼ç¹ï¼æ以è¶æ¥è¶åå°å¼å人åç亲çãåæ¶ï¼VBå¨æ°æ®åºå¼åæ¹é¢ä¹å
·æFoxproæè¿ä¸è½åç强大åè½ãVBè½å¤è¯»åå访é®AccessãExcelãDbaseXãFoxproãBtrieveåODBCçå¤ç§æ°æ®åºï¼å¹¶è½å©ç¨VBèªèº«æ带çæ°æ®åºå¼æå建Accessæ°æ®åºãæ以VBå¨ç®¡çä¿¡æ¯ç³»ç»ï¼MISï¼çå¼åå建设æ¹é¢å¾å°äºæ¯ç广æ³çåºç¨ãç°å¨ï¼ç¬è
å°±VBåºç¨æ°æ®åºçä¸äºæ¹æ³ä½ä¸ç®åçä»ç»ã
VB访é®æ°æ®åºé常æä¸ç§éå¾ï¼ç¬¬ä¸ï¼éè¿æ°æ®åºæ§å¶æ§ä»¶Data Control访é®ï¼ç¬¬äºï¼éè¿VBæä¾çæ°æ®åºå¯¹è±¡åéç¼ç¨è®¿é®ï¼ç¬¬ä¸ï¼éè¿ODBCæ¥å£è®¿é®ODBC APIå½æ°ãå¨è¿ä¸ç§æ¹æ³ä¸ï¼ç¬¬ä¸ç§æ¹æ³æä½èµ·æ¥ææ¹ä¾¿ãçµæ´»ãæäºææ¡ï¼åæ¶ä¹æè½ä½ç°Visual Basicé¢å对象çç¹è²ï¼æ
è¿é以Foxpro2.5çæ°æ®åºä¸ºä¾ï¼ä»ç»æ°æ®åºæ§å¶æ§ä»¶ï¼Data Controlï¼è®¿é®æ°æ®åºçæ¹æ³ä¸æ¥éª¤ï¼
ä¸ã å¨Formçªå£ä¸å å
¥Data Controlæ§ä»¶
ç¨é¼ æ å¨å·¥å
·çªå£çData Controlæ§ä»¶æé®ä¸åå»å·¦é®ï¼è¯¥å¯¹è±¡å³åºç°å¨Formçªå£çä¸é´ï¼æ§ä»¶å为Data1ï¼ï¼ç¨é¼ æ è°æ´å¥½æ§ä»¶ç大å°åä½ç½®ãå¦å·¥å
·ç®±ä¸æ æ¤æ§ä»¶ï¼å¯æå¼ä¸»èåçTools/Customï¼å¨å表ä¸éä¸Microsoft Data Controlå¤éæ¡ï¼ç¡®è®¤åå³å¯å°æ¤æ§ä»¶å å
¥å°å·¥å
·ç®±ä¸å»ã
äºã 设置èæ¥åº
ç¨é¼ æ åå»Data1ï¼æä¸F4ï¼æå¼å±æ§çªå£ï¼è®¾ç½®Connectå±æ§ä¸ºFoxpro2.5ï¼è®¾ç½®DatabaseName 为c:\foxprow\student.dbfï¼å设ç£çä¸å·²æè¿ä¸ªæ件ï¼ã
ä¸ã å å
¥å段æ¾ç¤ºãç¼è¾æ§ä»¶ï¼æ°æ®åºæç»æ§ä»¶ï¼
å¨Formçªå£ä¸å å
¥DGridæ§ä»¶ï¼å¦ä¸å¨æ¤æ§ä»¶ï¼å¯æå¼ä¸»èåTools/Customï¼å¨å表ä¸éæ©Apex Data BroundGridå¤éæ¡ï¼ç¡®è®¤åå³å¯åå·¥å
·ç®±ä¸å å
¥æ¤æ§ä»¶ãå¨Formçªå£ä¸åå»éä¸æ¤æ§ä»¶ï¼DGrid1ï¼ï¼æä¸F4æå¼å±æ§çªå£ï¼è®¾ç½®Datasourceå±æ§ä¸ºData1ï¼å¨Formçªå£ä¸ç¨é¼ æ å³é®åå»æ§ä»¶DGrid1ï¼éæ© Retrieve Fieldsï¼åç¨é¼ æ å³é®åå»æ§ä»¶DGrid1ï¼éæ©Editï¼ç¨é¼ æ è°æ´æ§ä»¶åæå
³å段大å°ï¼åç¨é¼ æ å³é®åå»æ§ä»¶DGrid1ï¼éæ©Propertiesï¼å±æ§ï¼ï¼å¨å¼¹åºçªå£ä¸ï¼éæ©Columsæ ç¾ï¼å¨ä¸æå表ä¸éColum1ï¼å°Captionå±æ§æ¹ä¸ºâå¦å·âï¼éæ©Colum2ï¼Captionå±æ§æ¹ä¸ºâå§åâï¼éæ©Colum3ã4å°Captionå±æ§æ¹ä¸ºâæ§å«âãâä¸ä¸âï¼æä¸âç¡®å®âæé®ã
ååFormçªå£ä¸å å
¥ä¸ä¸ªæé®æ§ä»¶ï¼å°Captionå±æ§è®¾ç½®ä¸ºâéåºâï¼åå»è¯¥æ§ä»¶ï¼Command1ï¼ï¼å¨ä»£ç çªå£ä¸åå
¥âENDâï¼åçã
æ¤æ¶ï¼ä¸ä¸ªå
·å¤æ°æ®åºè¯»åãæµè§åè½çåºç¨ç¨åºå°±å»ºç«äºï¼æä¸F5è¿è¡ï¼éè¿åå»Data1çåæé®å³å¯çåºå½åè®°å½çååæ
åµã
å¨æ¤åºç¡ä¸ï¼æ们è¿å¯ä»¥åå©æ°æ®åºæ§å¶æ§ä»¶çæå
³å±æ§åæ¹æ³è¿è¡æ´çµæ´»çæä½åæ§å¶ã
1ã 设置Data1.Visiable=Falseâå°æ§ä»¶è®¾ä¸ºä¸å¯è§
2ã å°æé®Command2ï¼3ï¼4ï¼5ï¼6ï¼7çCaptionå±æ§åå«è®¾ç½®ä¸ºâ追å âãâé¦è®°å½âãâä¸ä¸æ¡âãâä¸ä¸æ¡âãâ尾记å½âãâå é¤âï¼åå»åæé®ï¼åå«åå
¥äºä»¶ä»£ç ï¼
Sub Command1-Click() âå
³éåºç¨ç¨åº
End
End Sub
Sub Command2-Click() â追å è®°å½
Data1.Recordset .Addnew
Data1.Recordset .Update
Data1.Recordset .MoveLast
End Sub
Sub Command3-Click() â移åé¦è®°å½
Data1.Recordset .MoveFirst
End Sub
Sub Command4-Click() â移åä¸ä¸æ¡è®°å½
Data1.Recordset .MovePrevius
If Data1.Recordset .Bof Then
Data1.Recordset .MoveFirst
End If
End Sub
Sub Command3-Click() â移å尾记å½
Data1.Recordset .MoveLast
End Sub
Sub Command4-Click() â移åä¸ä¸æ¡è®°å½
Data1.Recordset .MoveNext
If Data1.Recordset .Eof Then
Data1.Recordset .MoveLast
End If
End Sub
é¤æ¤ä¹å¤ï¼æ°æ®åºæ§å¶æ§ä»¶è¿æBookmarkãRecordCountç许å¤å±æ§ä¸æ¹æ³ï¼è½å¯¹æ°æ®åºè¿è¡åç§æ¹ä¾¿çæä½ã
ç±æ¤å¯è§ï¼æ°æ®åºæ§å¶æ§ä»¶å
·ææ°æ®åºæä½æ¹é¢ç强大åè½ãå¦å¤ï¼æ°æ®åºæ§å¶æ§ä»¶çRecordSource å±æ§å¯ç¨ä¸ä¸ªSQLè¯å¥èµå¼ï¼
åèèµæï¼http://www.popsoft.com.cn/learn/sys/vb3.htm