# پایگاه‌های داده > سایر پایگاه‌های داده > Foxpro >  Internet applications

## kia1349

موضوعات مربوط به برنامه نویسی web base و اینترنت را در این قسمت مطرح کنید

----------


## binyaz2003

سلام به همه 
کسی هست که با فاکس برنامه تحت وب نوشته باشه ؟
یک برنامه تحت شبکه که هر چند وقت یکبار به بانک رو وب وصل شه و اطلاعات جدید رو دانلود و آپدیت کنه؟
فوریییییییییییییییییییییی  ییییییییییییییییی :(

----------


## kia1349

راستی آقای بی نیاز اینم بگم که که یکی از بهترین روشهای آپدیت اطلاعات کمک گرفتن فاکس از فایلهای vbs است که خیلی خوب ارتباطات اینترنتی رو هندل میکنه
توی این زمینه در کتاب  1002 thinks abouty visual foxpro  مثالهائی وجود دارد

----------


## rezaTavak

سلام

این کتاب کجاست؟

----------


## kia1349

توی briefcase یاهو 
در همین فروم (فکر کنم در قسمت نمونه برنامه های کاربردی) مسیر و روش دسترسی بهش رو نوشته ام

----------


## rezaTavak

ممنون

----------


## binyaz2003

چی شد هیچ کس نیست؟

----------


## kia1349

http://www.west-wind.com/presentatio...ataservice.asp

----------


## binyaz2003

سلام به همگی
کسی می دونه چه جوری مقادیر key/val  که از یک فرم به foxisapi  برنامه ما فرستاده میشه رو بازیابی کرد البته غیر از west wind؟

----------


## binyaz2003

سلام دوباره
یک سوال دیگه اینکه بانک ها رو چه جوری باز کنم رو وب با فاکس ایز آپی آی یعنی به صورت share  باشه یا نه؟

----------


## binyaz2003

کسی نیست؟تا حالا هیچ کس کار نکرده؟

----------


## rezamim

سلام
بنظر من ساده ترین راه استفاده از ActiveVFP هست . البته من فقط یکبار برای تست انجام اون باهاش کار کردم و فوق العاده بود. تنها دلیلی که دیگه ادامه ندادم این بود که سرورها اونو پشتیبانی نمیکردن . البته یک سرور خوب با قیمت مناسب پیدا کردم ولی هنوز خیلی مناسب نیست!
من یکی از برنامه های ساده بانک اطلاعاتی خودم رو با این ActiveVFP تحت وب نوشتم واقعا عالی بود.
الان هم چند تا برنامه تحت وب عالی توی نظرم هست که فعلا دنبال هاست خوب و ارزون هستم .

----------


## binyaz2003

بله درست اما وقتی نمیشه استفاده کرد چکار کنیم؟
من بالاخره تونستم جواب یکی از سوالهام رو پیدا کنم.البته هر چی تو foxite  سوال کردم من و پاس دادن طرف west wind  جالبه که کل سایت foxite  هم با foxisapi  کار شده.حالا نحوه گرفتن مقدار و دیکد کردن هر کدوم از فیلد های توی صفحه htm  رو توضیح می دم.
اول که تعریغات مربوط به کلاس رو انجام می دیم

*** System Defines
#Define CR Chr&#40;13&#41;+Chr&#40;10&#41;
Define Class TFirstServer As Custom OlePublic

حالا توابع رو می نویسیم :

**************************************************  **********************
	Function URLDecode
******************
*** Function&#58; URLDecodes a text string to normal text.
*** Assume&#58; Uses wwIPStuff.dll
*** Pass&#58; lcText - Text string to decode
*** Return&#58; Decoded string or ""
**************************************************  **********************
	Lparameters lcText
	Local lnSize

*** First convert + to spaces
	lcText=Strtran&#40;lcText,"+"," "&#41;
*** Handle Hex Encoded Control chars
	lcRetval = ""
	Do While .T.
*** Format&#58; %0A &#40; CHR&#40;10&#41; &#41;
		lnLoc = At&#40;'%',lcText&#41;
*** No Hex chars
		If lnLoc > Len&#40;lcText&#41; - 2 Or lnLoc &lt; 1
			lcRetval = lcRetval + lcText
			Exit
		Endif
*** Now read the next 2 characters
*** Check for digits - at this point we must have hex pair!
		lcHex=Substr&#40;lcText,lnLoc+1,2&#41;
*** Now concat the string plus the evaled hex code
		lcRetval = lcRetval + Left&#40;lcText,lnLoc-1&#41; + ;
			CHR&#40; Eval&#40;"0x"+lcHex&#41; &#41;
*** Trim out the input string
		If Len&#40;lcText&#41; > lnLoc + 2
			lcText = Substr&#40;lcText,lnLoc+3&#41;
		Else
			Exit
		Endif
	Enddo
	Return lcRetval
	Endfunc
* EOF URLDecod

این کد رو از تو کتاب Internet Applications with Visual FoxPro® 6.0Rick Strahl برداشتم که برای دیکد کردن مقدارها بکار می ره البته قبلش باید اون مقدار ها و اسم فیلدشون رو هم بگیریم که با استفاده از تابع بعدی این کار انجام می شه:

	Function getval
	Lparameters m.p1
	Local m.tt,m.tf,m.tv,m.ctype
	m.ctype=''
	Do While .T.
		tt = At&#40;"=",m.p1&#41;
		If tt = 0
			Exit
		Endif
		tf = Alltrim&#40;Left&#40;m.p1,m.tt - 1&#41;&#41;
		m.tv = Alltrim&#40;Substr&#40;m.p1,tt+1&#41;&#41;
		m.tt = At&#40;"&amp;",m.tv&#41;
		If m.tt > 0
			m.p1 = Substr&#40;m.tv,m.tt +1&#41;
			m.tv = Alltrim&#40;Left&#40;m.tv,m.tt-1&#41;&#41;
		Else
			m.p1 = ""
		Endif
		If m.tf = "&amp;"
			m.tf = Alltrim&#40;Substr&#40;m.tf,2&#41;&#41;
		Endif
		m.tf = Strtran&#40;m.tf," ","_"&#41;
		m.tv=this.URLDecode&#40;m.tv&#41;
		m.ctype=m.ctype+'field &#58;'+m.tf+' value&#58;'+m.tv

	Enddo
	Return m.ctype
	Endfunc

این کد رو هم از مثال foxis  خود ویژوال فاکس برداشتم که خیلی بهتر از روش کتاب هست و یکی از بهترین منابع برای آشنایی و نحوه کار با foxisapi  به نظر من و در آخر هم تو یک فانکشن دیگه اونها رو صدا میزنیم :

	Function sendeddata
	Lparameter lcFormVars, lcIniFile, lnReload
	lnReload = 0 &amp;&amp; Keep server loaded
	lcHeader = "HTTP/1.0 200 OK"+Chr&#40;13&#41; + Chr&#40;10&#41; +;
		"Content-type&#58; text/html" + Chr&#40;13&#41; + Chr&#40;10&#41; + Chr&#40;13&#41; + Chr&#40;10&#41;
	valus=This.getval&#40;lcFormVars&#41;
	lcOutput = "&lt;HTML>&lt;BODY>" + ;
		"&lt;h1>Hello World From Visual FoxPro!&lt;/H1>&lt;HR>" + Chr&#40;13&#41;+Chr&#40;10&#41; +;
		"&lt;b>Version&#58; &lt;/b>" + Version&#40;&#41; + "&lt;BR>"+;
		valus +"&lt;br>" +;
		"&lt;/BODY>&lt;/HTML>"
	Return lcHeader + lcOutput
	Endfunc

Enddefine

نکته خیلی مهم این هست که نحوه فراخوندن توابعی که مقدار رو برمی گردونه نباید در یک دستور دیگه باشه.حتما باید جدا باشه مثل :

	valus=This.getval&#40;lcFormVars&#41;

و اگر نه برنامه گیر می کنه و میره تو فاز busy که تنها راه بستنش task manager  هست .
امیدوارم این نوشته ها بدرد بخوره . البته هنوز جواب سوال دومم رو پیدا نکردم تا اون رو پیدا کنم حتما می نویسم
 :sunglass:

----------

