VFP ·R¥ÎªÌªÀ°Ï ­º­¶ 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¸ü.
 
 ±`¨£°ÝÃD±`¨£°ÝÃD   ·j´M·j´M   ·|­û¦Cªí·|­û¦Cªí   ·|­û¸s²Õ·|­û¸s²Õ   ·|­ûµù¥U·|­ûµù¥U 
 ­Ó¤H¸ê®Æ­Ó¤H¸ê®Æ   µn¤JÀˬd±zªº¨p¤H°T®§µn¤JÀˬd±zªº¨p¤H°T®§   µn¤Jµn¤J

VFP 8: §Ú­ÌÁ`¬O¹Ú·Qªº«D¥iµø¤è­±(Âà¶K)

 
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD  
µoªí¤H ¤º®e
Ruey



µù¥U®É¶¡: 2003-03-12
¤å³¹: 1698
¨Ó¦Û: tunglo

²Ä 1 ¼Ó

µoªíµoªí©ó: ¬P´Á¤é ¤K¤ë 24, 2003 11:43 am    ¤å³¹¥DÃD: VFP 8: §Ú­ÌÁ`¬O¹Ú·Qªº«D¥iµø¤è­±(Âà¶K) ¤Þ¨¥¦^ÂÐ

VFP 8: §Ú­ÌÁ`¬O¹Ú·Qªº«D¥iµø¤è­±[Âà©«]
§@ªÌ Claudio Lassala
ĶªÌ RMH
--§Úªº¥Î¤á¤£¯à¬Ý¨ì¸Ó§÷®Æ, ¦ý§Ú¥i¥H, ¦Ó¥B§Ú³ßÅw¥¦
¥¿¦p³q±`µo¥Í¦b·sª©¥»ªº Visual FoxPro ¤Wªº±¡ªp¤@¼Ë, §Ú­Ì±o¨ì¤F³\¦h·sªº "«D¥iµø" ¼W±j. ³o¨Ç¼W±j¤£·|³Q§Ú­Ìªº³Ì²×¥Î¤áª`·N¨ì, ¦ý§Ú­Ì¯u¥¿¦a³ßÅw¥¦­Ì: ·sªºÃþ, ©R¥O, ¨ç¼Æ, ©M¨ä¥L¥i¥HÅý§Ú­Ìªº¶}µoªÌ¥Í¬¡§ó»´ÃPªºªF¦è, §ó°ªªº¥Í²£¤O, ¥H¤Î¥i¥Hµ¹§Ú­Ìªº¤u§@±a¨Ó¤@¨t¦C·sªº¥D·NªºªF¦è.
¦b¥»¤å¤¤, §Ú±N¦V§A®i¥Ü¦b VFP 8 Beta ¤¤ªº³oºØÃþ«¬ªº·s¥\¯à. ·íµM, ¤£¥i¯à¦b¤@½g¤å³¹¤¤¦V§A®i¥Ü©Ò¦³ªº¤º®e. ¦]¦¹§Ú¿ï¾Ü¤F¨º¨Ç§Ú³Ì³ßÅw, ¦Ó¥B§Ú»{¬°§A¤]³ßÅwªºªF¦è. Åý§Ú­Ì¶}©l (·Ç³Æ¦n¤F¶Ü?! )!
·sªº CursorAdapter Ãþ
·sªº CursorAdapter Ãþµ¹§Ú­Ì·sªº®É¾÷¨ÓÂX®i§Ú­Ìªº¸ê®Æ´å¼Ð, ¥¦À°§U§Ú­Ì³B²z¥»¦aªº©M»·ºÝªº¸ê®Æ, ±q¥»¦aªº VFP ¸ê®Æ¨ì ODBC, ADO ©M XML.
¥¦ªº¨Ï¥Î¬O¬Û·íª½±µ¤F·íªº. ª`·N¤@¤U¤U­±ªº¥Ü¨Ò. §Ú­Ì¥H©w¸q¤@­Ó°ò©ó CursorAdapter °òÃþªº·sÃþ¶}©l:
Define CLASS CustomersData as CursorAdapter
*-- Åý§Ú­Ì©w¸q DataSourceType ¬° "¥»¦aªº" (VFP ¼Æ¾Ú)
DataSourceType="Native"
*-- Åý§Ú­Ì©w¸q§Ú­Ì±N³Ð«Øªº§O¦Wªº¦W¦r.
Alias="curCustomers"
*-- Åý§Ú­Ì©w¸q±N²£¥Í¶ñ¥R´å¼Ðªº¸ê®Æªº©R¥O.
SelectCmd = "select * from Customer"
Procedure Init
*-- ¤@¦ýª«¥ó³Q³Ð«Ø, Åý§Ú­Ì¶ñ¥R´å¼Ð.
this.CursorFill()
EndProc
EndDefine
CursorFill() ¤èªk¬O¸Ó·sªº°òÃþªº PEMs ªº¤@³¡¤À. ¨C¦¸³Q½Õ¥Î®É, ¥¦±N¥Î SelectCmd ÄݩʨÓÀò¨ú¸ê®Æ¨Ã¶ñ¥R´å¼Ð. §Ú­Ì±N¶H¤U­±¤@¼Ë¨Ó¨Ï¥Î¤W­±©w¸qªºÃþ:
oCustomersData = CreateObject("CustomersData")
Browse
°O¦í: ¤@¦ýª«¥ó³Q³Ð«Ø, ±N¦³¤@­Ó curCustomers ´å¼Ð¥H¬yÄý¤è¦¡¥´¶}.
§AÁٻݭn¦h¤@ÂI¥\¯à? ¦n§a, Åý§Ú­Ì¬Ý¬Ý¤U­±ªº¨Ò¤l:
Define CLASS CustomersData as CursorAdapter
*-- ²{¦b, §Ú­Ì·Q©w¸q¸ê®Æ·½ªºÃþ«¬¬° ODBC
DataSourceType="ODBC"
Alias="curCustomers"
*-- §Ú­Ì¥i¥H©w¸q¤@­Ó "Cursor Schema"
CursorSchema = ;
"customerid c(5),companyname c(30),contactname c(30),"+;
" contacttitle c(30), address c(30), city c(30), country"+;
" c(30)"
SelectCmd = ;
"select customerid, companyname, contactname, "+;
" contacttitle, address, city, country from Customers"
*-- ÁÙ°O±o CursorSetProp() ¨ç¼Æ¶Ü? Smile
Tables = "Customers"
KeyFieldList = "customerid"
UpdatableFieldList = "companyname"
UpdateNameList = "companyname customers.companyname"
Procedure Init

*-- ¦b¹B¦æ®É²K¥[¤@­Ó«O¦s³s±µ±±¨î½XªºÄÝ©Ê.
This.AddProperty('Connection',;
SQLSTRINGCONNECT(;
"Driver=SQL Server;Server=(local);"+;
"Description=Northwind, Int Security;"+;
"DATABASE=Northwind;uid=sa;pwd=;"))
*-- ¸ê®Æ·½¬O§Ú­Ìªº³s±µ±±¨î½X
This.DataSource = This.Connection
This.CursorFill()
EndProc
EndDefine
¥¿¦p§Ú¦b¤W­±ªº¥N½X¤¤ªºª`ÄÀ¤¤«ü©ú, §Ú­Ì¦³¤@¨Ç¥i¥HÂà´«´å¼Ð¨ì "¥i§ó·s´å¼Ð" ªºÄÝ©Ê, ´N¶H§Ú­Ì¥Î CursorSetProp() ¨ç¼Æ©Ò°µªº¨º¼Ë.
§A¥i¥H¬Ý¥X³o¤@ÂIªºº}«G¤§³B¶Ü? §Ú­Ì¥u»Ý­n³Ð«Ø¤@­ÓÃþ, ·í§Ú­Ì¨Ï¥Î¥¦®É, ¥¦±N±aµ¹§Ú­Ì¤@­Ó¶ñ¥R¤F¸ê®Æªº¥i§ó·s´å¼Ð. ³oºØ "objectified" ¤èªk¨Ó°µ¦¹¨Æªº½T¬O»Ål.
VFP ads ¼s§i: "§A¯à·P¨ì XML ¶Ü"? ¬Ý¬Ý¤U­±¤@­Ó:
Define CLASS WishListData as CursorAdapter
*-- ³]¸m·½Ãþ«¬¨ì "XML"!
DataSourceType="XML"
Alias="curWishList"

Procedure Init
*-- ³]¸m SelectCmd Äݩʨì±Nªð¦^ XML ¸ê®Æªº¤èªk.
This.SelectCmd = "this.GetXml()"
*-- ¶ñ¥R´å¼Ð.
This.CursorFill()
EndProc
Procedure GetXml
*-- ³X°Ý Internet ¤Wªº§Ú­Ì¤ß·Rªº UT ªº Web ªA°È
*-- ¨Ã±o¨ì¤@¨Ç¸ê®Æ, ¥ý¥Í!
loUniversalThread=Createobject("mssoap.soapclient30")
loUniversalThread.mssoapinit(;
" http://www.universalthread.com/WebService/VisualFoxPro.wsdl";Wink
lcUsername='MyUser'
lcPassword='MyPassword'
loUniversalThread.Login(lcUsername,lcPassword)
lcXML=loUniversalThread.GetWishList(DATE()-20)

RETURN lcXML
EndProc
EndDefine
¥u»Ý­n·Q·Q: §Ú­Ì§i¶D CursorAdapter that §Ú­Ì±N³B²z "XML". §Ú­Ì³]¸m SelectCmd Äݩʨì¤@­Óªð¦^ XML ¦êªºÃþ¤èªk. ¦b¦¹¤èªk¤W, §Ú­Ì´N¥i¥H±q§Ú­Ì·Q­nªº¦a¤è±o¨ì XML, ¨Ã¥B Adapter ±N¤p¤ß¦aÂà´«¸ê®Æ¨ì¤@­Ó VFP ´å¼Ð. ¬O¤£¬O«Ü»Å?
§AÁÙ°O±o§Æ±æ¤@­Ó¸û¦nªº»P ADO ªºµ²¦X¶Ü? ¦n§a, ²{¦b§Ú­Ì¥i¥H¤F. ¬Ý¬Ý³o­Ó:
Define CLASS CustomersData as xCursor
Procedure Init
*-- §Ú­Ìªº´å¼ÐÃþ«¬²{¦b¦¨¤F "ADO"
This.DataSourceType = "ADO"
*-- §Ú­Ì±N²K¥[¤@­ÓÄݩʨӫO¦s ADO Connection ª«¥ó.
This.AddProperty('oConn',;
NewObject("ADODB.Connection"))

*-- ²K¥[¥t¤@­ÓÄݩʨӫO¦s ADO RecordSet ª«¥ó.
This.AddProperty('oRS',;
NewObject("ADODB.Recordset"))

*-- §Ú­Ì±N¬° Connection ª«¥ó³]¸m³s±µ¾¹,
*-- as we磖e quite used to.
This.oConn.ConnectionString = ;
"Provider=SQLOLEDB.1;"+;
"Initial Catalog=Northwind; Data Source=lassalanotebook;uid=sa;pwd=;"
*-- ...¥´¶}³s±µ.
This.oConn.Open()
*-- Åý§Ú­Ì¬°§Ú­Ìªº RecordSet ª«¥ó³]¸m­è­è³Ð«Øªº³s±µ¬°¬¡°Êªº³s±µ
This.oRS.ActiveConnection = This.oConn
*-- ...¬°¸Ó Cursor Adapter ³]¸m RecordSet.
This.DataSource = This.oRS
*-- ³o¬O§Ú­ÌÀò¨ú¸ê®Æªº©R¥O.
This.SelectCmd = ;
"select customerid, companyname, contactname, "+;
"contacttitle, address, city, country from customers"
*-- ¥Î¸ê®Æ¶ñ¥R´å¼Ð, big boy!
This.CursorFill()
EndProc
EndDefine
§A¯à¬Ý¨ì¦³¦h®e©ö¶Ü? ¶È¶È³o¼Ë°µ§Ú­Ì´N¥i¥H±o¨ì¤@­Ó±q ADO RecordSet ¶ñ¥Rªº VFP ´å¼Ð.
¦n¤F, §Ú·Q§AÁÙ·Q­n§ó¦hªº¥\¯à. ¦]¦¹, Åý§Ú­ÌÄ~Äò½Í¤U¥h? §Ú­ÌÁ`¬O¹Ú·Q¤@­Ó²³æªº¤èªk¨Ó¸j©w ADO RecordSets ¨ì§Ú­Ìªºªí³æ, ¨ÃÁ`¬O«O«ù¨Ï¥Î RAD ¥\¯à¦Ó¤£¶È¶È¬O¥»¦aªºªí, ¦Ó¬O¥Î¥»¦a©M»·ºÝµø¹Ï.
¨Ï¥Î IntelliDrop (¦bªí³æ³]­p¾¹¤¤ªº¸ê®ÆÀô¹Ò©ì¨ìªí³æ¤W) ¨Ó¸j©w±±¨î¶µ¨ì¨Ó¦Û RecordSets, XML, ¥ô¦ó ODBC ¸ê®Æ·½, ©ÎÃþ¦üªºªF¦è¤S¦p¦ó? ¦n, ²{¦b§Ú­Ì¦³³o­Ó¯à¤O¤F.
Åý§Ú­Ì°²©w§Ú¦³³o¼Ë¤@­Óªí³æ, ²{¦b¤W­±¦³¤@­Ó²³æªºªí®æ, ¨º»ò§Ú·Q¥Î ADO ³X°Ý¤@¨Ç§Úªº SQL Server ¤Wªº¸ê®Æ, ¨Ã¦b§Úªº VFP ¥»¦aªí®æ¤¤Åã¥Ü³o¨Ç¸ê®Æ. ¦n, ¥kÀ»¸ê®ÆÀô¹Ò, §Ú­Ì¦³¤@­Ó·sªº¿ï¶µ, ¥s°µ "²K¥[ CursorAdapter". ª`·N¤@­Ó³o­ÓªF¦èªºÄÝ©Ê, §A·|¬Ý¨ì¤@¨Ç«D±`¦nªºÄÝ©Ê, ¦p "KeyFieldList", "UpdatableFieldList", "SendUpdates", ©M½Ñ¦p¦¹ÃþªºªF¦è.
¬°¤F§ó¦n¦a§Q¥Î IntelliDrop ¥\¯à, §Ú­Ì¥²¶·¨Ï¥Îªº¤@­Ó»ÅªºÄݩʬO CursorSchema. ¦b¸ÓÄݩʤW§Ú­Ì¥²¶·¿é¤J´å¼Ðªº "schema" (´å¼Ðªºµ²ºc). ©w¸q¸Ó schema, IntelliDrop ±N¶H§Ú­Ì±q¤@­Óªí©ì°Ê¤@­ÓÄæ¦ì¨ìªí³æ¤W¤@¼Ë¤u§@.
§Ú±Nµ¹¸Ó±±¨î¶µ©R¦W¬° "CursorAdapterCustomers", ¨Ã³]¸m¥¦ªº Alias Äݩʬ° "Customers".
³Ì«á, ±N¥Î¥H¤U¥N½X¶ñ¥Rªí³æªº Init ¤èªk:

*-- Åý§Ú­Ì«ü¥X§Ú­Ìªº CursorAdapter ¤Þ¥Î.
With Thisform.DataEnvironment.CursorAdapterCustomers
*-- ¤U­±¤@¦æªº·N«ä§A¤w¸g±q«e­±ªº¥N½X¤¤ª¾¹D¤F.
.DataSourceType="ADO"
.SelectCmd = ;
"select customerid, companyname, contactname, "+;
" contacttitle, address, city, country from Customers"
.AddProperty('oConn',null)
.AddProperty('oRS',null)
.oRS = CreateObject("ADODB.RecordSet")

.oConn = CreateObject("ADODB.Connection")
.oConn.Open("Driver=SQL Server;Server=lassalanotebook;"+;
"Description=Northwind, Int Security;"+;
"DATABASE=Northwind;uid=sa;pwd=;")

.oRS.ActiveConnection = .oConn

.Datasource = .oRS
.CursorFill()
Endwith
*-- ¦Ó¥B²{¦b, §Ú­Ì¥i¥H©w¸q§Ú­Ìªº´å¼Ð¬°§Ú­Ìªºªí®æªº¸ê®Æ·½.
This.grdCustomers.RecordSource = "Customers"
·í§Ú­Ì¹B¦æªí³æ®É, ªí®æ¤¤Åã¥Ü¤F§Ú­Ì·Q­nªº¸ê®Æ.
·sªº AddProperty() ©M RemoveProperty() ¨ç¼Æ
¨C¤@­Ó¨Ï¥Î SCATTER NAME ©R¥O³Ð«Øª«¥óªº¤HÁ`¬O§Æ±æ¦³¬YºØ¤èªk¨Ó²K¥[Äݩʨì¸Ó¹B¦æ®É³Ð«Øªºª«¥ó. §@¬°¤@­Ó³B²z¤èªk, §Ú­Ì¨Ï¥Îºô¤W¥i¥H§ä¨ìªº AddProp5.fll, ©ÎªÌ¤â°Ê¦a³Ð«Ø¤@­Ó°ò©ó¤@­Ó "light" Ãþªºª«¥ó (¦p Relation °òÃþ) ¨Ã²K¥[Äݩʨì°ò©ó´å¼ÐªºÄæ¦ì¤W.
²{¦b§Ú­Ì¤£¥²³o¼Ë°µ¤F: §Ú­Ì¦³¤F¤@­Ó·sªº¥s°µ AddProperty ªºÄÝ©Ê, §Ú­Ì¥i¥H¥Î¥¦¨Ó¦b¹B¦æ®É¬° "scattered" ª«¥ó©Î°ò©ó·sªº Empty Ãþ²K¥[ÄÝ©Ê(§ó¦hªºÃö©ó¸ÓÃþªº¤º®e°Ñ¨£¥»¤å«á­±), ¦]¬°³o¨Çª«¥ó¨S¦³¥»¦a¦a AddProperty() ¤èªk.
ª`·N¤U­±ªº¨Ò¤l:
*-- ­º¥ý, Åý§Ú­Ì±o¨ì¤@¨Ç¸ê®Æ...
Select Company_Name, Contact_Name From (_samples+"\tastrade\data\customer") ;
into Cursor curCustomer
*-- µM«á, Åý§Ú­Ì³Ð«Ø "scattered" ª«¥ó.
Scatter name loCustomer
*-- ³Ì«á, Åý§Ú­Ì²K¥[¤@­Ó¥s°µ MyNewProp ªº·sÄݩʨ쪫¥ó,
*-- ¨Ã¥Î­È "Myvalue" ªì©l¤Æ¥¦.
AddProperty(loCustomer, "MyNewProp", "Myvalue")
*-- §Ú­Ì¥i¥H¬d¸ß§Ú­Ìªº·sÄݩʪº­È
? loCustomer.MyNewProp
¦P¼Ë, §Ú­Ì²{¦b¤]¥i¥H¥Î·sªº RemoveProperty ¨ç¼Æ¦b¹B¦æ®É²¾¥hÄÝ©Ê, ¦p¤U©Ò¥Ü:
RemoveProperty(loCustomer, "Contact_Name")
·sªº Empty Ãþ
ª½¨ì VFP 7, ¨C¦¸§Ú­Ì»Ý­n¤@­Ó "¦Ð¶q¯Åªº" Ãþ (¥i¥H§Ö³t initiate ©M destroy ªºÃþ) ®É, §Ú­Ì³£¨Ï¥Î Relation °òÃþ; ¨º¬O¤@ºØ©_©Çªº, ¥D­n¥Î©ó¦b¸ê®ÆÀô¹Ò¤¤ªº¨â­Óªí¶¡«Ø¥ßÃö«YªºÃþ. ¦b VFP 8 ¤¤§Ú­Ì¦³¤F Empty Ãþ.
Empty Ãþ¬O¤@­Ó¨S¦³ PEMs (ÄÝ©Ê, ¨Æ¥ó©Î¤èªk) ªº, ¤£¯à¦b¬£¥Í¤]¤£¯à¦b PRG ©Î VCX Àɤ¤©w¸qªºÃþ. ¸ÓÃþ±N¦b§Ú­Ì»Ý­n¦b¹B¦æ®É³Ð«Øª«¥ó¨Ã²K¥[ÄÝ©Ê®É(¶H "scattered" ª«¥ó)¨Ï¥Î, ©Î·í§Ú­Ì»Ý­n¦b¹B¦æ®É«O¦s¥ô¦ó "objectified"¦¡¼Ëªº¸ê®Æ±Æ§Ç®É¨Ï¥Î.
¨Ò¦p: ¤£©¯ªº¬O, ¨S¦³¤@­Ó¥»¦a¤Æª©¥»ªº¸²µå¤ú»y VFP. ¦]¦¹, ¦b§Ú­Ìªºµ{¦¡¤¤¨Ï¥Î¤@­Óª«¥ó¨Ó«O¦s¸²µå¤ú»yªº¤ë¥÷©M¬P´Á¦ê¬O¦³¦n³Bªº. Åý§Ú­Ì¬Ý¬Ý§Ú­Ì¥i¥H¦p¦ó¥Î Empty Ãþ§¹¦¨¸Ó¤u§@:
*-- ­º¥ý©w¸q¤@­Ó "Utils" Ãþ,
*-- °ò©ó "Session" °òÃþ, ¨Ò¦p...
Define Class Utils As Session
*-- ²{¦b¤èªk±N "±a" µ¹§Ú­Ì¤@¨Ç¥Î³B.
Procedure BringUtils

*-- Åý§Ú­Ì³Ð«Ø§Ú­Ìªº "Empty" ª«¥ó.
Local loFoo
loFoo = Createobject("Empty")
*-- ¨Ï¥Î·sªº AddProperty() ¨ç¼Æ.
*-- ­º¥ý¬°»Ý­n«O¦sªº¤ë²K¥[ÄÝ©Ê...
AddProperty(loFoo, "Months(12)")
*-- ¦Ó¥B²Ä¤G­ÓÄÝ©Ê«O¦s¬P´Á.
AddProperty(loFoo, "DaysOfWeek(7)")
*-- Åý§Ú­Ì«O¦s¸ê®Æ.
With loFoo
*-- ¸²µå¤ú»yªº¤ë(³Q§Ú§ï¬°¤¤¤å¤F)
.Months(1) = "¤@¤ë"
.Months(2) = "¤G¤ë"
.Months(3) = "¤T¤ë"
.Months(4) = "¥|¤ë"
.Months(5) = "¤­¤ë"
.Months(6) = "¤»¤ë"
.Months(7) = "¤C¤ë"
.Months(Cool = "¤K¤ë"
.Months(9) = "¤E¤ë"
.Months(10) = "¤Q¤ë"
.Months(11) = "¤Q¤@¤ë"
.Months(12) = "¤Q¤G¤ë"
*-- ¸²µå¤ú»yªº¬P´Á
.DaysOfWeek(1) = "¬P´Á¤@"
.DaysOfWeek(2) = "¬P´Á¤G"
.DaysOfWeek(3) = "¬P´Á¤T"
.DaysOfWeek(4) = "¬P´Á¥|"
.DaysOfWeek(5) = "¬P´Á¤­"
.DaysOfWeek(6) = "¬P´Á¤»"
.DaysOfWeek(7) = "¬P´Á¤é"
Endwith
*-- ³Ì«á, ªð¦^§Ú­Ìªº¦³¥Îªºª«¥ó.
Return loFoo
EndProc
EndDefine
¦n¤F. ²{¦b, §Ú­Ì¥i¥H¶H¤U­±¤@¼Ë¨Ï¥Î§Ú­Ìªº Utils Ãþ:
*-- ªì©l¤Æ§Ú­Ìªº "Utils" Ãþ.
oUtils = Createobject("Utils")
*-- ½Õ¥Î BringUtils() ¤èªk.
*-- °O¦í¥¦±Nªð¦^¤@­Ó°ò©ó "Empty" Ãþªºª«¥ó.
oUtils = oUtils.BringUtils()
*-- ²{¦b§Ú­Ì¥i¥H¥Î¤¤¤åÅã¥Ü¤ë¦W...
? oUtils.Months(Month(Date()))
*-- ...©ÎªÌ¬P´Á´X.
? oUtils.DaysOfWeek(Dow(Date()))
¼W±jªº Scatter ©R¥O
²{¦b§Ú­Ì¥i¥H¥Î Scatter ©R¥Oªº Additive ÃöÁä¦r¨Ó§ó·s¤@­Ó¤w¦s¦bªºª«¥ó, ¬Ý¬Ý¥¦¬O¦h»ò¦³¥Î:
*-- Åý§Ú­Ì¬° "Customer" ³Ð«Ø¤@­Ó²³æªº°Ó·~ª«¥ó
Define Class Customer As Session
*-- ¤@¨ÇÄÝ©Ê...
Company_Name = ""
Contact_Name = ""
*-- ¤@­Ó²³æªº¥[¤u¸ê®Æªº¤èªk.
Procedure GiveMeInfo
Return Alltrim(This.Company_Name) + " - " + This.Contact_Name
Endproc
Enddefine
²{¦b, ¬Ý¬Ý¤U­±:
*-- ¹ê¨Ò¤Æ§Ú­Ìªº Customer ª«¥ó.
oCustomer = CreateObject("Customer")
*-- §Ú­Ì±o¨ì¤F¤@¨Ç¸ê®Æ... ¥u¬O¬°¤F´ú¸Õ...
Select Company_Name, Contact_Name From (_samples+"\tastrade\data\customer") into cursor curCustomer
*-- ²{¦b§Ú­Ì¥i¥H "scatter" ¸ê®Æ¨ì¤w¸g³Ð«Øªº BizObject ª«¥ó.
Scatter Name oCustomer additive
*-- ½Õ¥Î§Ú­Ìªº GiveMeInfo() ¤èªk.
MessageBox(oCustomer.GiveMeInfo())
§Ú»{¬°³o«D±`¦³¥Î, ¤£¬O¶Ü?
¥t¤@­Ó«D±`¦nªº»P "scattered" ª«¥ó¬ÛÃöªºªF¦è¬O INSERT-SQL »y¥y²{¦b¥i¥H±q¤@­Óª«¥ó±µ¨ü¸ê®Æ. ¦]¦¹§Ú­Ì¥i¥H¶H¤U­±¤@¼Ë°µ¤@¨Ç¨Æ±¡:
*-- Åý§Ú­Ì³Ð«Ø¤@­Ó²³æªº´ú¸Õ´å¼Ð.
Create Cursor Foo (Company_Name C(30), Contact_Name C(30))
*-- ²{¦b, °²©w§Ú­Ì¦³¤@­Ó«e­±³Ð«Øªºª«¥ó:
Insert into Foo from name oCustomer
¸Ó·sªº»Å¥\¯à°t¦X¨Ï¥Î§Ú­Ì¼ô±xªº VFP ´å¼Ð©M°Ó·~ª«¥ó, Åý VFP §ó¦³¤O¦a³B²z¸ê®Æ.
¬°¥»¦a VFP ª«¥óªº¨Æ¥ó¸j©w
¦b VFP 7 ¤¤, §Ú­Ì¦³¤F EventHandler() ¨ç¼Æ, ¥i¥Î¨Ó¸j©w COM ª«¥ó¨Æ¥ó¨ì¤@­Ó VFP ª«¥ó. ²{¦b§Ú­Ì¥i¥H¨Ï¥Î¤@­Ó·sªº¥s°µ BindEvent() ªº¨ç¼Æ°µ¬Û¦Pªº, ¦ý¸j©w VFP ª«¥ó¨Æ¥óªº¨Æ.
Åý§Ú­Ì¦Ò¼{¤@¤U...: §Ú­Ì¦³¤@­Ó¥]§t¤@­Ó¸ê®Æª«¥óªº°Ó·~ª«¥ó, ¦Ó¥B§Ú­Ì·Q¥Î¥t¤@­Óª«¥óºÊµø¸Óª«¥ó¤¤ªº¸ê®Æ­×§ï. ¦b¦¹¯S©w±¡¸`¤U, Åý§Ú­Ì­º¥ý³Ð«Ø°Ó·~Ãþ:
*-- §Ú­Ìªº BizObj.
Define Class Customer As Session
*-- ¤@­ÓÄݩʪ«¥óÄÝ©Ê.
oData = Null
Procedure Init
*-- ±q¤@­Óªí¤¤¸j©w¸ê®Æ.
Select * From (_samples+"\tastrade\data\customer") into Cursor curCustomer
*-- ³Ð«Ø¸ê®Æª«¥ó.
Scatter Name This.oData Memo
EndProc
EndDefine
²{¦b§Ú­Ì±N³Ð«Ø§Ú­Ìªº "¨Æ¥ó³B²z¾¹" Ãþ.
*-- ©w¸q¤@­ÓÃþ.
Define Class FooHandler As Session
*-- §Ú­Ì©w¸q¤@­Ó³B²z "Company_Name" Äæ¦ìÅܤƨƥ󪺤èªk.
*-- ...·íµM, ¦b¤@­Ó¯u¹êªº±¡ªp¤U§Ú­ÌÁÙ¦³³\¦h§ó·P¿³½ìªºªF¦è¦b¦¹³B...
Procedure CompanyNameHandling
Messagebox("§A¤w¸g­×§ï¤F¤½¥qªº¦W¦r")
EndProc
EndDefine
³Ì«á, Åý§Ú­Ì¨Ï¥Î³o¨ÇÃþ:
*-- ­º¥ý³Ð«Ø§Ú­Ìªº BizObj.
oCustomer = CreateObject("Customer")
*-- ²{¦b¬O§Ú­Ìªº¨Æ¥ó³B²zª«¥ó
oFooHandler = CreateObject("FooHandler")
*-- ³Ì«á, Åý§Ú­Ì¨Ï¥Î¨ç¼Æ Bindevent, ¨Ó¹ê»Ú¸j©wªF¦è...
Bindevent(oCustomer.oData, "Company_Name", oFooHandler, "CompanyNameHandling")
*-- ...¸Õ¸Õ­×§ï "Company_name" ªº­È...
oCustomer.oData.Company_Name = "¥ô¦óªF¦è..."
¥¿¦p§A©Ò¨£¨ì, BindEvent() ¨ç¼Æ±µ¦¬ªºª«¥ó°Ñ¼Æ±N¿Eµo¨Æ¥ó (¦b¦¹³õ¦X¬O oCustomer.oData ª«¥ó), ÄݩʱN¿Eµo¨Æ¥ó (¦b¦¹³õ¦X¬O Company_Name ÄÝ©Ê), ª«¥ó±N³B²z¨Æ¥ó (¤]´N¬O§Ú­Ìªº oFooHandler ª«¥ó), ³Ì«á, ¤èªk±N³B²z¨Æ¥ó (¤]´N¬O CompanyNameHandling() ¤èªk). ¥ô¦ó®É­Ô Company_Name ³Q§ïÅÜ, ±NÅã¥Ü¤@­Ó¸ê°T (³o¬O§Ú­Ì¦bÃþ¤¤©w¸qªº).
§A¬O§_·Q¬Ý¬Ý§ó "¥iµø" ªº¨Ò¤l? ¦pªG¬O, ¦n§a: Åý§Ú­Ì»¡§A¦³¤@­Óªí³æ¦Ó¥B§AÁ`¬O§Æ±æ¥¦¦b¿Ã¹õ¤j¤pµo¥ÍÅܤƮɵo¥Í¬ÛÀ³ªºÅܤÆ. §Ú­Ì¥i¥H¶H¤U­±¤@¼Ë¨Ó°µ¦¹¨Æ:
*-- Åý§Ú­Ì³Ð«Ø¤@­Ó²³æªºªí³æ.
Public oFooForm
oFooForm = Createobject("FooForm")
oFooForm.Visible = .T.
*-- Åý§Ú­Ì¸j©wªF¦è...
Bindevent(_Screen, "Resize", oFooForm, "Resize")
*-- ¬Ý¬Ý§Ú­Ìªº¥Ü¨Òªí³æ.
Define Class FooForm As Form
Procedure Resize
This.Top = _Screen.Top + 5
This.Left = _Screen.Left + 5
This.Width = _Screen.Width - 100
This.Height = _Screen.Height - 100
Endproc
Enddefine
¦b¥H¤W¥N½X¤¤, §Ú­Ì©w¸q¤F·í _Screen ª«¥óªº Resize ¨Æ¥ó¿Eµo®É, §Ú­Ì§Æ±æ oFooForm ª«¥óªº Resize ¤èªk¤]¿Eµo. §A¥i¯à¤w¸gª`·N¨ì¤F, _Screen ª«¥ó¦b¦¹³B¬O³Q°Êªº, ¦]¬°¥¦µ´¤£ª¾¹D¦³¤@¨ÇªF¦è·| "¸òÀH¥¦ªº°Ê§@".
§Úª¾¹D§A³ßÅw¤j¶qªº¥Ü¨Ò, ¦]¦¹³oùجO¥t¥~¤@­Ó, §Ú±NÅý§A§ó¦n¦a²z¸Ñ BindEvent() ¨ç¼Æ.
§AÁÙ°O±o¨C¦¸·íªí®æ¤¤µL½×­þ¤@¦C¤¤ªº¤å¥»®Ø³Q³æÀ»®É§A»Ý­n¹B¦æ¤@¨Ç¥N½X¶Ü? ¨ì¥Ø«e¬°¤î, §A¥u¦³¦b¨C¤@¦Cªº¤å¥»®Øªº Click() ¤¤¿é¤J¥N½X, ©ÎªÌ©w¸q¤@­Ó¥]§t¤F·Q­n¹B¦æªº¥N½Xªº textbox Ãþ¨Ã±N¸ÓÃþ²K¥[¨ìªí®æ¤¤ (¦Ó¥B§A§ó¥[¤£³ßÅw³oºØ¤èªk, ¦]¬°°£¦b¦¹³B¥~§Aµ´¤£·|¦b¨ä¥L¦a¤è¨Ï¥Î¸ÓÃþ...).¦n¤F, ¨Ï¥Î BindEvent() ¨ç¼Æ, §A¥i¥H³o¼Ë°µ:
Åý§Ú¸ÑÄÀ¤@¤U: ¦bªí³æªº Init() ¤èªk¤¤§Ú¶i¦æ¤F¨Æ¥ó¸j©w. ¥¦¥u¬O¹M¾äªí®æªº©Ò¦³ªº¦C, ¨Ã¸j©w¦U textbox (ªí®æ¤¤ªº Control(2)) ªº RightClick() ¨Æ¥ó¨ìªí³æªº BringSomeInfo() ¤èªk. ¬O¤£¬O¬Û·í»Å? ¸òµÛ§Ú: VFP Rocks!
·sªº Collection Ãþ
§A¦A¤]¤£»Ý­n³Ð«Ø§A¦Û¤vªº Collection Ãþ: ²{¦b§Ú­Ì¦³¤@­Ó¥»¦aªº Collection Ãþ¤F! §A·Q¹ê½î¤@¤U¥¦¶Ü? ¦n¶Ü: Åý§Ú­Ì°²©w§ÚªºÀ³¥Îµ{¦¡»Ý­n¼h­¡±Æ©ñ©Ò¦³¤w¥´¶}ªºµøµ¡. ¬Ý¬Ý¥Î Collection ¦Ç¨Ó¹ê²{¥¦¬O¦h»òªºÂ²³æ:
*-- ©w¸q¤@­Ó²³æªº "FormsManager" Ãþ.
Define Class FormsManager As Session
*-- ©w¸q¤@­Ó«O¦s Collection ªºÄÝ©Ê.
oFormsCollection = Null
Procedure Init
*-- ¹ê¨Ò Collection Ãþ.
This.oFormsCollection = Createobject("Collection")
Endproc
*-- ©w¸q¤@­Ó²K¥[µøµ¡¤Þ¥Î¨ì Collection ªº¤èªk.
Procedure AddForm(loForm)
*-- ¬°¤F²K¥[¶µ¨ì collection,§Ú­Ì¥i¥H¨Ï¥Î Collection ª«¥óªº Add() ¤èªk.
*-- ¦b¸Ó¥Ü¨Ò¤¤, §Ú­ÌÀË´úµøµ¡ªº Caption
*-- §@¬° Collection ¤¤ªº¶µªºÁä.
This.oFormsCollection.Add(loForm, loForm.Caption)
*-- ¸j©w¨Æ¥ó¨ìµ¡¤fªº QueryUnload,
*-- ¸Ó¤èªk¤Þ¥Î¨ì¤w³Q¸ÓÃþªº ReleaseForm ¤èªk²M°£¤Fªº[µøµ¡.
Bindevent(loForm, "QueryUnload", This, "ReleaseForm", 2)
Endproc
*-- ÄÀ©ñµøµ¡¤Þ¥Îªº¤èªk.
Procedure ReleaseForm
This.oFormsCollection.Remove(_Screen.ActiveForm.Caption)
EndProc
*-- ¤@­Ó²³æªº "cascade" µøµ¡ªº¤èªk.
Procedure CascadeForms
Local lnTop, lnLeft
lnTop = 5
lnLeft = 5
*-- §Ú­Ì¥i¥H¥Î¤@­Ó ForEach µ²ºc¨Ó¹M¾ä collection ¤¤ªº©Ò¦³¶µ.
For Each loForm In This.oFormsCollection
loForm.Top = lnTop
loForm.Left = lnLeft
loForm.Visible = .T.
lnTop = lnTop + 20
lnLeft = lnLeft + 20
Next
Endproc
Enddefine
§A­nª`·N¨ìªº³¡¤À¬O:
§Ú­Ì¥Î Collection Ãþªº Add() ¤èªk²K¥[¶µ¨ì¶°¦X, ¨Ã¥Î Remove() ¤èªk¨Ó²¾¥h¶µ.
Add() ¤èªkªº²Ä¤G­Ó°Ñ¼Æ¬O³X°Ý¶µªº "Áä".
§Ú­Ì¥i¥H¥Î For Each µ²ºc¨Ó¹M¾ä¶°¦X¤¤ªº¶µ.
²{¦b,§Ú­Ì¥i¥H³o¼Ë¨Ï¥Î§Ú­Ìªº "Form Manager" :
*-- ©w¸q¤@¨ÇÅܼÆ...
Public oForm1, oForm2, oForm3, oFM
*-- ¹ê¨Ò¤Æ¤@¨Çµøµ¡, ¨Ãµ¹¥¦­Ì«ü©w captions...
oForm1 = Createobject("Form")
oForm1.Caption = "Customers"
oForm2 = Createobject("Form")
oForm2.Caption = "Orders"
oForm3 = Createobject("Form")
oForm3.Caption = "Products"
*-- ¹ê¨Ò¤Æ§Ú­Ìªº "Forms Manager"
oFM = Createobject("FormsManager")
*-- ²K¥[µøµ¡¨ì§Ú­Ìªº "Form Manager"
oFM.AddForm(oForm1)
oFM.AddForm(oForm2)
oFM.AddForm(oForm3)
*-- ½Ð¨D "Form Manager" ¨Ó "Cascade" µ¡¤f.
oFM.CascadeForms()
¤W­z¥N½X¹B¦æ«á²£¥Íªºµ²ªG:
·Q·Q: ¶H³o¼Ë°µ,§A¦³³\¦h±±¨î¶µ¦b§Aªºªí³æ¤W, ¦Ó¥B¦³¤@ºØ²³æªº¤èªk¨ÓÀò±o¥¦­Ìªº¤Þ¥Î. ¦Ó¥B Collection Ãþ¬°§Ú­Ì´£¨Ñ¤F¤@¨Ç¨ä¥Lªº»Åªº¥\¯à, ¶H¤U­±¤@¼Ë:
*-- §Ú­Ì¥i¥H¬d¸ß Collection ª«¥óªº Count ÄÝ©Ê,
*-- ¨Ãµo²{¥¦¥]§t¤F¦h¤Ö¶µ.
? oFM.oFormsCollection.Count
*-- §Ú­Ì¥i¥H¥Î¶°¦Xªº Index ¨Ó³X°Ý¶°¦X¤¤ªº³æ­Óªº¶µ...
*-- ...¨Ò¦p, Åý§Ú«H¬Ý¬Ý§@¬°¶°¦X¤¤ªº²Ä¤G­Ó¶µªºªí³æ¤Þ¥Îªº Top ÄÝ©Ê­È.
? oFM.oFormsCollection.Item(2).Top
*-- ...©Î«ö¥¦ªº "Áä"
? oFM.oFormsCollection.Item("Orders").Top
¥t¤@­Ó»Åªº Insert-SQL ¼W±j
°£«e­±´£¨ìªº·s±q¤@­Óª«¥ó´¡¤J·s°O¿ýªº·s¥\¯à¥~, ²{¦b§Ú­Ì¥i¥H±q¤@­Ó Select-SQL µ²ªG¶i¦æ´¡¤J. ¬Ý:
*-- Åý§Ú­Ì³Ð«Ø¤@­Ó²³æªº´å¼Ð...
Create Cursor MyCustomers (cName C(30))
*-- ...¨Ã´¡¤J±q¤@­Ó Select-SQL »y¥yªð¦^ªº¦æ.
Insert into MyCustomers ;
Select Company_Name ;
from (_Samples+"\Tastrade\Data\Customer") ;
where country = "Brazil"
¡@
Textmerge ¼W±j
§Ú¬O¤@­ÓÁ`¬O³ßÅw¨Ï¥Î Textmerge (¤å¥»¦X¨Ö) ªº¤H . ¨Ã¥B§Ú±N§i¶D§A§Ú©Ò³ßÅw³o­Ó·sªº¼W±j. ¦^¨ì UTMag/RapoZine ªº²Ä¤»´Á, ¦b Shortcuts column ¤¤, §Ú§i¶D¤F§AÃö©ó¦p¦ó¨Ï¥Î Textemerge ¨Ó¥H¤@ºØ²M´·ªº¤è¦¡³Ð«Ø SQL »y¥y, ¥N´À¨º¨Ç¥i©Èªº¦ê³s±µ. §A¥i¥H¶H³o¼Ë:
Local lcSQL
Text to lcSQL TextMerge NoShow
Select Field1, Field2, Field3, Field4
From Table
Inner Join AnotherTable
On Table.SomeField = AnotherTable.SomeField
Inner Join FooTable
On Table.Somefield = FooTable.SomeField
Where Field1 = << lcSomeVar >>
And Field2 = << lcAnotherVar >>
Group by Field3, Field2
Order by Field1
EndText
§Ú­ÌÁÙ¦³¤@¤pÂI¯ÊÂI: §Ú­Ì»Ý­n¶H¤U­±¤@¼Ë²¾¥hµL¤º®eªºªÅ®æ:
StrTran(lcSQL, Chr(13)+Chr(10), " ")
¦n¤F, §Ú­Ì¤£¦A»Ý­n¨º­Ó¤F. §Ú­Ì¥i¥H¶H¤U­±¤@¼Ë­×§ï Text ©R¥O:
Text to lcSQL TEXTMERGE NOSHOW PRETEXT 1+2
¨Ï¥Î·sªº PRETEXT ÃöÁä¦r§Ú­Ì¥i¥H²¾¥h¦U¦æ§À³¡ªºªÅ®æ©M tabs (flags 1+2). ³o¤£¶È¶È¹ï SQL »y¥y¦³¥Î, ¹ï©ó XML ¤åÀɤ]¬O¦p¦¹.
µ²½×
¦n¤F, ´N³o¨Ç! ¥¿¦n§Ú¦b¤å³¹¶}©l³B§i¶D§A, VFP 8 µ¹§Ú­Ì±a¨Ó¤F³\¦h»Åªº·s¥\¯à, ¨Ã¥B¦b¥»¤å¤¤§Ú¶È¦V§A®i¥Ü¤F¤@¨Ç»Åªº·sªº "«D¥iµø" ¥\¯à. §Ú§Æ±æ§A³ßÅw¥¦. ¬Ý¬Ý¥»´Á¤¤ªº¨ä¥L¿E°Ê¤H¤ßªº VFP 8 Beta ¬ÛÃö¤å³¹!

_________________
#############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~­ì¨Ó©¯ºÖ¨º»ò²³æ!!

¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
#############################
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
±q¤§«eªº¤å³¹¶}©lÅã¥Ü:   
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï ©Ò¦³ªº®É¶¡§¡¬° ¥x¥_®É¶¡ (GMT + 8 ¤p®É)
²Ä1­¶(¦@1­¶)

 
«e©¹:  
±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§@