|
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´Á¤é ¤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() ¨ç¼Æ¶Ü?
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";
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§ÚÌ·Qnªº¦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ÁÙ·Qn§ó¦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§ÚÌ·Qnªº¸ê®Æ.
·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¤@ºØ©_©Çªº, ¥Dn¥Î©ó¦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( = "¤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·Qn¹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
§Anª`·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()
¤Wz¥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¤~·|§ó¦³½ì~
############################# |
|
¦^³»ºÝ |
|
|
|
|
±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§@
|