  | 
				VFP ·R¥ÎªÌªÀ°Ï ¥»°Q½×°Ï¬° Visual Foxpro ·R¥ÎªÌ¸gÅç¥æ¬yªº¦a¤è, ½Ð¦h¦h§Q¥Î"·j´M"ªº¥\¯à, ¥ý¬d¬Ý¬Ý¦³µL«e¨Ò¥i´`, ¦pªGÁÙ¦³¤£À´ªº¦Aµo°Ý. ³¡¥÷¥DÃD¦³ªþ¥[ÀÉ®×, ¶·¥ýµù¥U¦¨¬°ªÀ°Ï©~¥Á¤~¥i¥H¤U¸ü.   
				 | 
			 
		 
		 
	
		| ¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD   | 
	 
	
	
		| µoªí¤H | 
		¤º®e | 
	 
	
		Ruey
 
 
  µù¥U®É¶¡: 2003-03-12 ¤å³¹: 1698 ¨Ó¦Û: tunglo
  ²Ä 1 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤ ¤¤ë 16, 2003 10:56 pm    ¤å³¹¥DÃD: Âà´«Access¨ìVFP Tables(Âà¶K) | 
				     | 
			 
			
				
  | 
			 
			
				MS Access MDB to VFP tables 
 
  
 
Summary 
 
 
 
Well it started when I found it hard to check rtf files for MSDN subscription index. In last few shipments there were also an MDB in 'UN-SUPPED' directory but my Access is too perfect to use an MDB < g > so I decided to get Access data to VFP tables. 
 
  
 
Description 
 
 
 
For anyone interested it's also a simple demonstration of converting MDB tables to VFP tables (Here in his particular case I was only dealing with tables, if you want you can access < bg > other as well - VIEW and SYSTEM TABLES. To do that you'd only change ['TABLE'] to something like ['TABLE','VIEW'] But be aware if you also include SYSTEM TABLES you get their names in myMDB cursor however you shouldn't try to execute following SQLEXEC on them).
 
 
 
lcDataBaseName = 'MSDN'
 
lcMDBDir = 'C:\My Documents\MSDN CD SUBCRIPTION INDEXES\UN-SUPPED'
 
lcMDBName = 'MSDN APRIL CD SUBCRIPTION INDEX.MDB'
 
lnConnHandle = SQLSTRINGCONNECT('DSN=MS Access Database;DBQ='+;
 
  lcMDBDir+'\'+lcMDBName+';DefaultDir='+;
 
  lcMDBDir+';DriverId=25;FIL=MS Access;MaxBufferSize=2048;'+;
 
  'PageTimeout=5;UID=admin;')
 
Create data (lcDataBaseName)
 
SQLTABLES(lnConnHandle, ['TABLE'], 'myMDB')
 
Select myMDB
 
Scan
 
  lcSQL = 'select * from "'+trim(table_name)+'"'
 
  lcCursor = chrtran(trim(table_name),' ','_')
 
  lcTableName = '_'+lcCursor
 
  SQLEXEC(lnConnHandle,lcSQL,lcCursor)
 
  Select (lcCursor)
 
  Copy to (lcTableName)
 
  Add table (lcTableName)
 
Endscan
 
SQLDISCONNECT(lnConnHandle)
 
Modi data
 
Once you have data in a VFP database you know what to do with it :) | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  µù¥U®É¶¡: 2003-03-12 ¤å³¹: 1698 ¨Ó¦Û: tunglo
  ²Ä 2 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¥| ¤»¤ë 05, 2003 2:05 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				§@ªÌJacky
 
¨Ó·½µ{¦¡³]pѼֳ¡
 
*********** ConvertAccessDataToVFPData.prg**************
 
******************* 2003/04/12 ************************
 
******************** by Jacky *************************
 
*****************************************************
 
********************½d¨Ò»¡©ú*************************
 
***¥H¤U½d¨Ò¤£»Ýn§ó°Ê¥ô¦óµ{¦¡½X¡A¶È×§ïÀɮצWºÙ§Y¥i¡A
 
***§Y lcDatabaseName_Access, lcTableName_Access, 
 
***lcDatabaseName_VFP ¤Î lcTableName_VFP¡C
 
***¥¦±N¦Û°Ê§âAccess¸ê®ÆÂনVFP¸ê®Æ¡A
 
***¨Ã¦Û°Ê²£¥ÍVFP¸ê®Æ®w¤Î¸ê®Æªí®æ¡A
 
***±z¥i¥HCOPY¥H¤Uµ{¦¡½X¨Ó¨Ï¥Î¡A¨Ã§â¥¦¦s¦¨ .prg ÀÉ¡C
 
***nª¾¹D¡A¥Î .prg ÀɨÓÂàÀÉ»·¤ñ .scx Àɧֱo¦h¡A
 
***Y¸ê®Æ¶qÃe¤j¡A¨ä¶¡®t²§´N«D±`©úÅã ¡D¡D¡D
 
***Y¸ê®Æ¤£¦h¡A¼Æ¬í¤º´NÂàÀɧ¹¦¨
 
*********************** µ{¦¡¶}©l ******************************
 
CLOSE DATABASE ALL
 
SET SAFETY OFF
 
*********************** ¥u»Ý×§ï¤U¦CÀɮצWºÙ ****************
 
lcDatabaseName_Access = "C:\AccessÀÉ®×\test.mdb" && §â¥¦§ï¦¨±z±ýÂàÀɪºAccess¸ê®Æ®w(database)
 
lcTableName_Access = "Table_Access" && §â¥¦§ï¦¨±z±ýÂàÀɪºAccess¸ê®Æªí®æ(table)
 
lcDatabaseName_VFP = "Database_VFP" && §â¥¦§ï¦¨±z¤ß¥Ø¤¤ªº¸ê®Æ®w¦WºÙ
 
lcTableName_VFP = "Table_VFP" && §â¥¦§ï¦¨±z¤ß¥Ø¤¤ªº¸ê®Æªí®æ¦WºÙ
 
=ConvertAccessToVFP(lcDatabaseName_Access, lcTableName_Access, lcDatabaseName_VFP, lcTableName_VFP)
 
CLOSE ALL
 
******************** ¥H¤U¤£¥²§ó°Ê **************************
 
PROCEDURE ConvertAccessToVFP
 
PARAMETER cDatabaseName_Access, cTableName_Access, cDatabaseName_VFP, cTableName_VFP
 
 
Insertion = .F.
 
PRIVATE cString
 
cString = "DRIVER=Microsoft Access Driver (*.mdb);" 
 
cString = cString + "DBQ=" + cDatabaseName_Access
 
 
cHandle=SQLSTRINGCONNECT(cString) && ³sµ²¨Ã¶}±Ò Access ¸ê®Æ®w
 
Insertion = .F.
 
IF cHandle < 0
 
=MessageBox("³s±µ¤£¤W", 48, "ª`·N")
 
return
 
ELSE
 
cSQLString = "SELECT * FROM " + cTableName_Access && SQL¬d¸ß¦r¦ê
 
=SQLEXEC(cHandle, cSQLString , "temp") && °õ¦æSQL¬d¸ß¡A¨Ã±Nµ²ªGÀx¦s©ó CURSOR "temp" ¤¤
 
=SQLDisconnect(cHandle) && ¤¤Â_»PAccess¸ê®Æ®w³sµ²
 
SELECT temp
 
IF RECCOUNT() = 0
 
=MessageBox("¬dµL¸ê®Æ", 48 , "ª`·N")
 
ELSE
 
BROWSE NOMODIFY && ¥ýÂsÄýAccess¸ê®Æªí®æ¤º®e
 
Insertion = .T.
 
ENDIF
 
ENDIF
 
 
IF Insertion = .T.
 
SELECT temp
 
********* ¨ç¼Æ»¡©ú ***********
 
*FCount()-----¬°Àò¨ú Fieldªº¼Æ¶qªº¨ç¼Æ
 
*Field()----¬°Àò¨úFieldªº¦WºÙªº¨ç¼Æ
 
*FSize()-------¬°Àò¨úFieldªº¦ì¤¸¼Æªº¨ç¼Æ
 
*Type()---------¬°Àò¨úFieldªº«¬ºAªº¨ç¼Æ
 
*****************************
 
*«Ø¥ß¸ê®Æ®w¡G
 
CREATE DATABASE &cDatabaseName_VFP
 
*«Ø¥ßVFP¸ê®Æªí®æ¡A¥¦¦Û°Ê¥[¤J¸ê®Æ®w¤¤
 
cCreateTableString = "CREATE TABLE &cTableName_VFP ( "
 
FOR i = 1 TO FCount()
 
DO CASE
 
CASE i = FCount()
 
cCreateTableString = cCreateTableString + Field(i) + " " ;
 
+ Type(Field(i)) + "(" ;
 
+ ALLTRIM(STR(FSize(Field(i)))) + "))" 
 
OTHERWISE
 
cCreateTableString = cCreateTableString + Field(i) + " " ;
 
+ Type(Field(i)) + "(" ;
 
+ ALLTRIM(STR(FSize(Field(i)))) + ")," 
 
ENDCASE
 
ENDFOR
 
&cCreateTableString && °õ¦æ CREATE TABLE ©R¥O
 
*******************************************
 
SELECT temp
 
nFieldCount = FCount()
 
DIMENSION FieldName(nFieldCount), FieldContents (nFieldCount) &&«Å§i¤GÓ°}¦C
 
FOR i = 1 TO nFieldCount
 
FieldName( i ) = FIELD( i ) &&§âÄæ¦ì¦WºÙÀx¦s©ó°}¦C¤¤
 
ENDFOR
 
************** °»´ú¿Ã¹õ pixels ***************
 
nSreenHeight = SYSMETRIC(2) &&¿Ã¹õ¼e«×
 
DO CASE
 
CASE nSreenHeight = 768
 
nRows = 25
 
nCols = 75
 
CASE nSreenHeight = 600
 
nRows = 20
 
nCols = 55
 
OTHERWISE
 
nRows = 25
 
nCols = 70
 
ENDCASE 
 
************** ¶}©lÂàÀÉ ***************
 
SELECT temp
 
WAIT WINDOW AT nRows, nCols "ÂàÀɤ¤¡A½ÐµyÔ¡D¡D¡D" NOWAIT
 
SCAN
 
FOR i = 1 TO nFieldCount
 
STORE &FieldName( i ) TO FieldContents(i) && §âÄæ¦ì¤º®eÀx¦s©ó°}¦C¤¤
 
ENDFOR
 
SELECT &cTableName_VFP
 
APPEND BLANK
 
FOR i = 1 TO nFieldCount
 
IF NOT IsNull(FieldContents(i))
 
REPLACE &FieldName( i ) WITH FieldContents(i)
 
ENDIF 
 
ENDFOR
 
ENDSCAN
 
***************¤j¥\§i¦¨¡AÅ禬¦¨ªG **************
 
WAIT WINDOW AT nRows, nCols - 5 "¤j¥\§i¦¨¡A¥i¥HÅ禬¦¨ªG¤F¡I" NOWAIT
 
SELECT &cTableName_VFP
 
BROWSE && ÂsÄýÂàÀɫ᪺VFP¸ê®Æªí¤º®e¬O§_»PAccess¤@P
 
ENDIF
 
***************** µ{¦¡µ²§ô ***********************
 
 
¡@¡@ _________________ #############################
 
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~ì¨Ó©¯ºÖ¨º»ò²³æ!!
 
 
¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
 
############################# | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  µù¥U®É¶¡: 2003-03-12 ¤å³¹: 1698 ¨Ó¦Û: tunglo
  ²Ä 3 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¥| ¤»¤ë 05, 2003 2:34 pm    ¤å³¹¥DÃD: Dbc»PMdb¤¬Â઺¤u¨ã | 
				     | 
			 
			
				
  | 
			 
			
				| Dbc»PMdb¤¬Â઺¤u¨ã | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  µù¥U®É¶¡: 2003-03-12 ¤å³¹: 1698 ¨Ó¦Û: tunglo
  ²Ä 4 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¥| ¤»¤ë 12, 2003 1:32 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				| accessì½X | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		Rita
 
 
  µù¥U®É¶¡: 2003-04-16 ¤å³¹: 38
 
  ²Ä 5 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤é ¤E¤ë 05, 2010 12:14 am    ¤å³¹¥DÃD: ½Ð°Ývfpªºdbf Âà¨ìmdbªº¤@Ótable¦p¦ó¼gµ{¦¡ | 
				     | 
			 
			
				
  | 
			 
			
				¤½¥q·~°È¤Wn±Ndbfªº¸ê®ÆÂà¨ì·~°È³¡³B²z,
 
¥Ø«e¬O¥Îaccessùتº¶×¤J¥\¯à,¤£ª¾¨º¦ìªB¤Í¼g¹LÃþ¦üvfpªºÂàÀɵ{¦¡
 
¯àÀ°§Ú̸ѨM³oÓ¤£¤è«K¤S¤£¬ì¾Çªº§@ªk
 
ÁÂÁÂ | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		saint
 
 
  µù¥U®É¶¡: 2003-07-14 ¤å³¹: 211
 
  ²Ä 6 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤@ ¤E¤ë 06, 2010 10:47 am    ¤å³¹¥DÃD: Re: ½Ð°Ývfpªºdbf Âà¨ìmdbªº¤@Ótable¦p¦ó¼gµ{¦¡ | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Rita ¼g¨ì: | 	 		  ¤½¥q·~°È¤Wn±Ndbfªº¸ê®ÆÂà¨ì·~°È³¡³B²z,
 
¥Ø«e¬O¥Îaccessùتº¶×¤J¥\¯à,¤£ª¾¨º¦ìªB¤Í¼g¹LÃþ¦üvfpªºÂàÀɵ{¦¡
 
¯àÀ°§Ú̸ѨM³oÓ¤£¤è«K¤S¤£¬ì¾Çªº§@ªk
 
ÁÂÁÂ | 	  
 
°Ú..¤£´N°Ê¤â¼g¤@¤U´N¥i¥H¤F¶Ü..?
 
1.query ¥X¸ê®Æ
 
2.ODBC ³s¨ì Access
 
3.Âà¤J
 
 
§A¤½¥q¦b¨º§r? ¦b¥x¥_¤]³\¥i¥HÀ°§A¬Ý¤@¤U | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		nelsonchuang
 
 
  µù¥U®É¶¡: 2003-09-04 ¤å³¹: 564 ¨Ó¦Û: »OÆW
  ²Ä 7 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤@ ¤E¤ë 06, 2010 1:12 pm    ¤å³¹¥DÃD: Re: ½Ð°Ývfpªºdbf Âà¨ìmdbªº¤@Ótable¦p¦ó¼gµ{¦¡ | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Rita ¼g¨ì: | 	 		  ¤½¥q·~°È¤Wn±Ndbfªº¸ê®ÆÂà¨ì·~°È³¡³B²z,
 
¥Ø«e¬O¥Îaccessùتº¶×¤J¥\¯à,¤£ª¾¨º¦ìªB¤Í¼g¹LÃþ¦üvfpªºÂàÀɵ{¦¡
 
¯àÀ°§Ú̸ѨM³oÓ¤£¤è«K¤S¤£¬ì¾Çªº§@ªk
 
ÁÂÁÂ | 	  
 
¬O±`±`nÂà,ÁÙ¬OÂà¤@¦¸´N¥i¥H¤F? _________________ ¤j®a¦n,½Ð¦h«ü±Ð | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		Rita
 
 
  µù¥U®É¶¡: 2003-04-16 ¤å³¹: 38
 
  ²Ä 8 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¥| ¤E¤ë 09, 2010 12:47 am    ¤å³¹¥DÃD: dbfÀÉÂàaccess³B²z | 
				     | 
			 
			
				
  | 
			 
			
				ÁÂÁ¦U¦ìªºÀ°¦£!!
 
 
¤½¥qªº·~°È¬O¨C¤é¦³´Nn°õ¦æ¤@¦¸¸ê®Æ§ó·s,
 
©Ò¥H¦³3Ó³¡ªù´Nn¤â°ÊÂà3¦¸
 
³oºØ§@ªk¥i¥H§ï¶i
 
©Ò¥H·Q¸I¸I¹B®ð¬Ý¦³µL¦n¤Í¹J¨ì¹L¦P¼Ëªº°ÝÃD | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
±z µLªk ¦b³oÓª©±µoªí¤å³¹ ±z µLªk ¦b³oÓª©±¦^ÂФ峹 ±z µLªk ¦b³oÓª©±½s¿è¤å³¹ ±z µLªk ¦b³oÓª©±§R°£¤å³¹ ±z µLªk ¦b³oÓª©±¶i¦æ§ë²¼ ±z µLªk ¦b³oÓª©±ªþ¥[ÀÉ®× ±z µLªk ¦b³oÓª©±¤U¸üÀÉ®×
  | 
   
  
  
Powered by phpBB © 2001, 2005 phpBB Group ¥¿Å餤¤å»y¨t¥Ñ phpbb-tw ºûÅ@»s§@ 
		 |