View Full Version : Databases,Tables, Views, Indexing and SQL syntax
kia1349
چهارشنبه 18 شهریور 1383, 06:52 صبح
موضوعات مربوط به بانکهای اطلاعاتی را در این قسمت مطرح کنید
binyaz2003
سه شنبه 05 آبان 1383, 10:12 صبح
چه جور دستور select بنویسم که تنها آخرین رکورد موجود رو برام برگردونه؟ :گیج:
kia1349
چهارشنبه 06 آبان 1383, 09:06 صبح
اگر منظور آخرین رکورد نوشته شده در آخرین خط بانک اطلاعاتی است که میتونید از دستور
max(recno())
استفاده کنید
binyaz2003
چهارشنبه 06 آبان 1383, 09:25 صبح
برای کار با تابع sqlexec می خوام برای بانک های sql
binyaz2003
شنبه 14 آذر 1383, 18:15 عصر
سلام
این قضیه ردیف رو چطوری ردیف کنم؟
یک شماره ردیف برای نشان دادن تو گرید و هنگام چاپ :oops:
kia1349
یک شنبه 15 آذر 1383, 13:36 عصر
توی گرید یه مقدار کار داره
اگه شما با sql از جدولت یه cursor بسازی با یه تابع میتونی به اون فیلد ردیف هم اضافه کنی و بعد اونهارو توی گرید نشون بدی
توی ریپورت هم میتونی از منوی ریپورت بری به قسمت variables و بعد یه متغیر بساز مثلا بنام radif
بعد در قسمت value to store بنویس radif+1
در قسمت initial value هم مقدار 0 صفر را قرار بده
قسمت ریست هم به شما میگه که چه زمانی ردیف را مجددا ریست یا صفر کند
binyaz2003
یک شنبه 15 آذر 1383, 17:55 عصر
توی گرید یه مقدار کار داره :گیج:
binyaz2003
یک شنبه 15 آذر 1383, 22:51 عصر
من تو گرید با ست کردن خاصیت رکردسورستایپش به sql و قرار دادن یک عبارت ساده ست کنم اما وقتی فرم رو اجرا می کنم یک پنجره کوری باز می شه هر کار می کنم باز م باز میشه؟
binyaz2003
سه شنبه 17 آذر 1383, 10:59 صبح
یافتم یافتم
فقط کافیه یک کالومن به گریدتون اضافه کنید و کنترل سورس اون رو بگزارید this.activerow
اما فوت کاشیگریش اینه که در اکتیویت فرم کد زیر رو هم بنویسین
ThisForm.grid1.ActivateCell(1,1)
ThisForm.grid1.colUMN2.ControlSource="ThisForm.grid1.ActiveRow"
ThisForm.Refresh
binyaz2003
سه شنبه 17 آذر 1383, 12:58 عصر
:sorry:
این همه چیزش خوبه اما وقتی فوکوس رو از دست میده همش صفر میشه اگر بشه همین رو درست کنیم خیلی بهتره چون تابع و اضافه کردن فیلد خیلی دردسر داره مخصوصا اگر وسط کار مثلا یک رکورد رو دلیت کنیم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟
binyaz2003
شنبه 21 آذر 1383, 20:13 عصر
باز هم یافتم
اما باید یک فیلد به جدول اضافه شه
بعد یک برنامه رو صدا میزنم
b=recno()
count for !deleted() to a
for i=1 to a
repla radif with a
skip 1
endfor
go b
فکر کنم از این به بعد باید سوال و جواب رو خودم با هم بنویسم
بابا آخه چه خبره اینجا :mad:
بخش های دیگه هر روز سه چهار تاپیک جدید دارند
خوب شاید هم بچه های اینجا همه دیگه آخر آخرشن فقط من اشکال دارم :(
kia1349
دوشنبه 23 آذر 1383, 06:39 صبح
نه بی نیاز جان
موضوع اینه که تا یه سوالی مطرح می کنی ماشاءالله خودت هم خیلی سریع دنبال جوابش میگردی و پیداش میکنی
ALI RAFFIE
دوشنبه 23 آذر 1383, 13:09 عصر
غیر از این موضوع فکر کنم همه بچه های این بخش هر کدوم حسابی مشغولن.انشاء الله همه موفق باشید و خدا قوت.
binyaz2003
دوشنبه 23 آذر 1383, 21:28 عصر
خدا کنه همینطور باشه
binyaz2003
سه شنبه 24 آذر 1383, 20:47 عصر
من با دستورات spt یک کرسر updateable می سازم و تو گرید نمایش می دم وقتی delete می کنم و tableupdate بعدش هم گرید رو رفرش می کنم اما رکورد از تو گرید حذف نمیشه اما در بانک حذف شده چیکار کنم؟
kia1349
چهارشنبه 25 آذر 1383, 06:56 صبح
جناب بی نیاز من دیدم که دوستمون آقای معمار بدنبال حل مشکل شما هست (ردشو توی سایتهای اونور آب گرفتم)
برای شماره رکورد توی گرید یکی از دوستان اونور آبی این کدها رو ارسال کرده بود
*Grid.Init
With This
.AddProperty('CurrentOrder',0)
Select Recno() As RcNo, 1 As OrderCol ;
from (.RecordSource) ;
order By OrderCol ;
into Cursor crsOrdering ;
readwrite
Select crsOrdering
Index On RcNo Tag RcNo
Select (.RecordSource)
Set Relation To Recno() Into crsOrdering
.Columns(.ColumnCount).ControlSource = "(Recno('crsOrdering'))"
Endwith
*Grid.Refresh
Local lcOrder, lnOrder
With This
Select (.RecordSource)
lnOrder = Val(Sys(21))
If .CurrentOrder # m.lnOrder
lcOrder = Iif(m.lnOrder = 0,'1',Key(m.lnOrder))
Select Recno() As RcNo, &lcOrder As OrderCol ;
from (.RecordSource) ;
order By OrderCol ;
into Cursor crsOrdering ;
readwrite
Select crsOrdering
Index On RcNo Tag RcNo
Select (.RecordSource)
Set Relation To Recno() Into crsOrdering
.CurrentOrder = m.lnOrder
Endif
Endwith
binyaz2003
چهارشنبه 25 آذر 1383, 09:01 صبح
تو کدوم سایت؟
rezamim
پنج شنبه 26 آذر 1383, 11:31 صبح
http://www.universalthread.com :wink:
rezamim
پنج شنبه 26 آذر 1383, 11:49 صبح
البته من متاسفانه فرصت تست این کد را که دوستی از ترکیه فرستاده پیدا نکردم . لطفا تست کنید و نتیجه را بگوپید.
reza_z
چهارشنبه 09 دی 1383, 11:41 صبح
سلام به همه دوستان
ایا امکان اینکه با استفاده از progrees bar بتونیم تعداد رکوردهایی که در همون لحظه به بانک اضافه میشه بصورت حقیقی نشان داد ؟
مثلا وقتی از دستورات copy ,appened استفاده میکنیم درصد حقیقی رکورد های اضافه شده از اول کپی تا انتهای کپی در پروگرس بار نشان دهد ؟
ممنون
rezamim
چهارشنبه 09 دی 1383, 13:16 عصر
فقط میگم که این progress bar ها سرعت پردازش رو پایین میارن
reza_z
چهارشنبه 09 دی 1383, 17:53 عصر
سرعت برام خیلی مهم نیست
ایا راهی داره ؟؟؟؟؟
kia1349
دوشنبه 14 دی 1383, 06:34 صبح
بله میشه
اگر با دستورات sql کار کنید میتونید یه فیلد فانکشنی به اون اضافه کنید که پارامترهای لازم رو بگیره و روی صفحه با دستورات wait اون پارامترهای تحلیل شده را نمایش بدهد
naderigh
پنج شنبه 01 بهمن 1383, 10:37 صبح
با سلام
من دو جدول دارم تغریبا همانند هم از هر لحاظ ولی اطلاعات آنها مقداری با هم متفاوت هستند مثلا تمام اطلاعات جدول شماره دو در جدول شماره یک موجود میباشد و تعدادی رکورد در جدول یک هست که در جدول شماره دو نیست حالا من یک query میخوام که خروجی آن ردیفهاپی که در جدول شماره یک هست ولی در جدول شماره دو نیست را بدهد :موفق:
rezamim
پنج شنبه 01 بهمن 1383, 15:15 عصر
ببینید با این روش کمکی میشه ؟
*** Table1 ( ACode N(3,0), AName C(10) ) index on ACode
*** Table2 ( ACode N(3,0), BName C(10) ) index on ACode
SELECT Table1.*, Table2.bname;
FROM table1 LEFT OUTER JOIN table2 ON Table1.acode = Table2.acode;
HAVING Table2.bname IS NULL INTO CURSOR TempCurs
rezaTavak
پنج شنبه 01 بهمن 1383, 17:50 عصر
سلام
جداول شما باید یک فیلد AutoInc داشته باشد که از همان برای چک استفاده میکنید (nRelate) شما از دو دستور Select تو در تو زیر استفاده کنید:
SELECT * from Table1 WHERE NOT exist (select * from Table2 WHERE Table1.nRelate = Table2.nRelate )
حتما جواب میده.
rezaTavak
پنج شنبه 01 بهمن 1383, 17:55 عصر
سلام
البته یادم رفت بگم روشهای دیگه ای در Help فاکس هم بود.
naderigh
یک شنبه 04 بهمن 1383, 07:22 صبح
بسیار متشکرم
این مدت که سایت مشکل داشت من نیز مشکل خود را طبق دستور زیر حل کردم
SELECT bank1.cod, bank1.nam;
FROM bank2 RIGHT OUTER JOIN bank!bank1 ;
ON bank2.cod = bank1.cod;
WHERE bank2.cod IS NULL;
GROUP BY bank1.cod;
ORDER BY bank1.cod;
INTO CURSOR moa READWRITE
مجددا از لطف شما سپاسگزارم :موفق:
rezamim
یک شنبه 04 بهمن 1383, 15:45 عصر
خدا رو شکر
naderigh
پنج شنبه 29 بهمن 1383, 09:45 صبح
میشود بفرماپید که در یک query از چند جدول یا table میشود استفاده کرد
چون من در ساخت آن تا دو جدول مشکلی ندارم ولی از دو table بیشتر شد با مشکل
مواجه میشود و نتیجه دلخواه را نمیدهد ارتباطات نیز تماما درست است ولی نتیجه (خروجی) خراب است یا به عبارتی فیلدهای جدول سوم و به بعد خراب است
naderigh
سه شنبه 04 اسفند 1383, 10:04 صبح
میشود بفرماپید که در یک query از چند جدول یا table میشود استفاده کرد
چون من در ساخت آن تا دو جدول مشکلی ندارم ولی از دو table بیشتر شد با مشکل
مواجه میشود و نتیجه دلخواه را نمیدهد ارتباطات نیز تماما درست است ولی نتیجه (خروجی) خراب است یا به عبارتی فیلدهای جدول سوم و به بعد خراب است
لطفا جواب دهید
rezamim
چهارشنبه 05 اسفند 1383, 08:48 صبح
دوست عزیز به دستور زیر و نحوه قرار گرفتن join ها نگاه کن . به احتمال خیلی زیاد خط join شما مشکل داره
SELECT DISTINCT Barnameh.bnum, Barnameh.bdate, Products.pname, Barnameh.bval,;
Barnameh.transpay,;
Tdest.tname, Drivers.dfamily, Drivers.dname, Drivers.dcarno, Owner.ofamily, Barnameh.ocode, Barnameh.dcode,;
Barnameh.tcode, Barnameh.pcode, Barnameh.tperton, Barnameh.bpish, Barnameh.bprice,;
Barnameh.bdelay, Barnameh.bddesc, Barnameh.bdtotal,Barnameh.vtranspay, Barnameh.totalvt, Barnameh.bcom, Barnameh.ccode,;
Barnameh.bcperton, Barnameh.bctotal, barnameh.bcoval, barnameh.bhpish, barnameh.bhprice, Comision.Cname ;
FROM barnameh ;
LEFT OUTER JOIN owner ON Barnameh.ocode = Owner.ocode ;
LEFT OUTER JOIN drivers ON Barnameh.dcode = Drivers.dcode ;
LEFT OUTER JOIN tdest ON Barnameh.tcode = Tdest.tcode ;
LEFT OUTER JOIN products ON Barnameh.pcode = Products.pcode ;
LEFT OUTER JOIN comision ON Barnameh.ccode = comision.ccode ;
ORDER BY Barnameh.bnum INTO CURSOR CursorTemp readwrite
این دستور خیلی خوب کار میکنه. البته فقط برای دیدن بخش مورد نظر گذاشتم
naderigh
یک شنبه 16 اسفند 1383, 12:04 عصر
با سلام
میخواستم بدانم که در update sql میخواهم فقط یک ردیف خاص update گردد
اینطوری فرض کنید که اگر در جدول تعدادی از رکوردها دقیقا مشابه هم باشد چون در update sql فیلدهاییی که مشخصه خاصی دارند را میشود به روز نمود میخواهم همانند local wiew عمل update انجام شود و جهت اطلاع تعداد رکوردهای بانک نیز بسیار زیاد میباشد چه جوری میشود که رکوردنامبر یک ردیف خاصی که query اصلاحاتی صورت گرفته update گردد
امیدوارم که مطلب را درست نوشته باشم
naderigh
چهارشنبه 19 اسفند 1383, 06:59 صبح
اقایان لطفا ..... :موفق:
naderigh
یک شنبه 23 اسفند 1383, 10:45 صبح
آقایان مشکل را حل کردم
و یک مشکل دیگر
اگر ما یک query را ساختیم و یک نفر دیگر در بانک اطلاعاتی ردیفی حذف یا اضافه کند یا اطلاحاتی را انجام دهد ایا راهی هست که بشود query ساخته شده ما نیز از اخرین اطلاعات update یا به روز شود بدون ساخت مجدد query
naderigh
یک شنبه 23 اسفند 1383, 11:09 صبح
یک مشکل دیگر
من یک query میسازم و از دو جدول استفاده کردم حال در بعضی از ردیفها فیلدهای جدول دوم null است و من میبایست a.mab-b.mab حاصل عبارت را بدست اورم چون این فیلد null در جدول دوم حاصل عبارت نیز null میشود
یا به عبارتی بهتر ان فیلدهایی که null است را میخواهم صفر کنم حال چگونه ؟ :sad2:
naderigh
دوشنبه 24 اسفند 1383, 10:03 صبح
من با دستورات spt یک کرسر updateable می سازم و تو گرید نمایش می دم وقتی delete می کنم و tableupdate بعدش هم گرید رو رفرش می کنم اما رکورد از تو گرید حذف نمیشه اما در بانک حذف شده چیکار کنم؟
اقا شما مشکلتان را حل نمودید
binyaz2003
سه شنبه 25 اسفند 1383, 10:26 صبح
سلام
من دوباره کرسر رو می سازم راه دیگه ای پیدا نکردم اگر بقیه آقایان راهی پیشنهاد بدند
برای اینکه هم که گرید به هم نریزه اول
thisform.grid1.recorsource=''
بعد از ساختن کرسر
thisform.grid1.recorsource='MyCourcur'
binyaz2003
سه شنبه 25 اسفند 1383, 10:28 صبح
اگر ما یک query را ساختیم و یک نفر دیگر در بانک اطلاعاتی ردیفی حذف یا اضافه کند یا اطلاحاتی را انجام دهد ایا راهی هست که بشود query ساخته شده ما نیز از اخرین اطلاعات update یا به روز شود بدون ساخت مجدد query
راه دیگه ای نیست
binyaz2003
سه شنبه 25 اسفند 1383, 10:30 صبح
من یک query میسازم و از دو جدول استفاده کردم حال در بعضی از ردیفها فیلدهای جدول دوم null است و من میبایست a.mab-b.mab حاصل عبارت را بدست اورم چون این فیلد null در جدول دوم حاصل عبارت نیز null میشود
شما میتونید از تابع ISNULL استفاده کنید برای تشخیص اینکه نال هست یا نه! :sunglass:
من میخواستم میل کنم اما اومدم اینجا دیدم تو مشخصاتتون ایمیل ندارید
naderigh
سه شنبه 25 اسفند 1383, 10:34 صبح
اقا بی نهایت از لطف شما سپاسگذارم و شرمنده از اینکه مزاحم شما شدم
naderigh
یک شنبه 14 فروردین 1384, 07:41 صبح
با سلام
من میخواهم در qurey یک فیلد از جدول را که کراکتر میباشد(حروف فارسی) را باهم جمع نمایم
مثلا فرض کنید که یک فاکتور شامل چند ردیف میباشد برای یک مشتری صادر شده که در ردیف اول مداد در دوم خودکار و در ...... حال query را میخواهم که نام کالاها را در یک فیلد جمع نماید(مدادوخودکاروپاککن و.....) :موفق:
kia1349
دوشنبه 15 فروردین 1384, 06:15 صبح
باید یه تابع براش بنویسی
naderigh
پنج شنبه 27 مرداد 1384, 11:03 صبح
بهترین و پر سرعت ترین روش برای استفاده ( ثبت و اصلاح و حذف رکورد) از جداول فاکس که بصورت شبکه و تغریبا تعداد رکوردها نیز زیاد باشد چیست
matinik
جمعه 04 شهریور 1384, 03:04 صبح
salam
kasi converter foxpro be sql ro dare?
rezaTavak
جمعه 04 شهریور 1384, 14:33 عصر
سلام
خود فاکس پرو داره.
binyaz2003
جمعه 04 شهریور 1384, 14:34 عصر
شما با ویزارد Upsizing ویژوال فاکس می توانید براحتی این کار رو انجام بدین
در جواب آقای naderigh باید بگم که اگر رکوردها زیاد هست از sql server استفاده کنید
naderigh
دوشنبه 07 شهریور 1384, 07:33 صبح
با تشکر از اقای binyaz تعداد رکوردها انقدر زیاد نیست که نشود از فاکس استفاده برد و با توجه به اشنائی بنده از فاکس ترجیح میدهم که از بانکهای خود فاکس بهره ببرم
مشکلاتی که من دارم اینچنین است که تعداد شش کاربر با سیستم کار میکند و از این شش نفر سه نفرشان اطلاعات خاص خودشان را ثبت میکنند یعنی برای هرکدام بانک فیلتر شده و مابقی کاربران نیز تمام اطلاعات را در اختیار دارند البته با فیلتر تاریخ مثلا یک روز خاص
مشکل اول چون فیلتر میکنم لحظه ورود به فرم با توجه به تعداد رکورد و شبکه و سرعت پایین بعضی از کامپیتوترها مکس چند ثانیه ای دارند
مشکل دوم من میخواستم از local view بهره ببرم ولی زمانی که یک ردیف توسط یک کاربر دیگری غیر از کاربر خودش ثبت میگردد ان ردیف قابل مشاهده نیست یا بعبارتی بایستی local view مرتب ابدیت شود
naderigh
پنج شنبه 10 شهریور 1384, 07:13 صبح
اقایان لطفا
naderigh
شنبه 12 شهریور 1384, 10:57 صبح
اقایان لطفا بفرمائید ک چگونه میشود که یک رکورد در بانک ثبت گردد و پرینت ان نیز گرفته شود ولی بعد از لحظه ای ردیف فوق خود به خود حذف شود به گونه ای که حتی جزء رکوردهای دلیت شده هم نیست انگار که اصلا ثبت نشده در صورتی که مدرک چاپ شده ان ردیف موجود است
و اضافه کنم که برنامه فوق بصورت شبکه و فاکس 7 میباشد
rezaTavak
شنبه 12 شهریور 1384, 11:34 صبح
سلام
اگر از ویوی قابل ویرایش استفاده میکنید باید جدول را Update کنید.
TableUpdate()
naderigh
شنبه 12 شهریور 1384, 12:55 عصر
خیر بنده از خود جدول البته با فیلتر خاص هر کاربر استفاده کرده ام
rezaTavak
شنبه 12 شهریور 1384, 18:40 عصر
سلام
اگر از فرم استفاده میکنید دقت کنید در DataEnvironment همان جدول چگونه Update میشود.
naderigh
دوشنبه 14 شهریور 1384, 08:23 صبح
با تشکر از شما جناب اقای توکل
به حضورتان عرض شود که من از فرم استفاده میکنم ولی از data environment فرم استفاده نمیکنم بدلیل مشکلاتی که برای استفاده مشترک بوجود امده بود
من در init فرم جدوالی را که نیاز دارم use میکنم
خواهش میکنم راهنمائی فرمائید که واقعا مشکل دارم
rezaTavak
دوشنبه 14 شهریور 1384, 19:03 عصر
سلام
شاید در ساخت ایندکس ها مشکل دارد.
naderigh
چهارشنبه 16 شهریور 1384, 07:32 صبح
من نمیدانم که مشکل چیست ولی واقعا عجیب است
بفرمائید فرمان = TABLEUPDATE(.T.) واقعا کار آیی دارد یا نه
naderigh
چهارشنبه 16 شهریور 1384, 11:51 صبح
نیازی به نصب نرم افزار یا کار دیگری روی server نیست
rezaTavak
چهارشنبه 16 شهریور 1384, 22:57 عصر
سلام
این فرمان قاعدتا بر روی Cursor ها کار میکند.
reza_z
پنج شنبه 17 شهریور 1384, 12:24 عصر
با سلام
من از ado استفاده میکنم و sql چرا وقتی یک رکورد به بانک اضافه میکنم باید از برنامه خارج شم دوباره برنامه رو اجرا کنم حالا میتونم رکورد رو ببینم یا جستجو با موفقیت انجام میشه
لطفا اگه کسی از دوستان راهنمایی کنه ممنون میشم
rezaTavak
جمعه 18 شهریور 1384, 09:51 صبح
سلام
احتمالاً یه دستوری مثل UpdateTable باید داشته باشه.
naderigh
شنبه 19 شهریور 1384, 11:38 صبح
میشود بفرمائید که اگر در فرمها از local view استفاده کنم چگونه میتوانم انرا ابدیت کنم که اطلاعات جدید ثبت شده در بانک را داشته باشم بدون اینکه از فرم خارج شوم
یا چگونه میشود یک query را در فرم ابدیت کنم بدون اینکه انرا مجدد بسازم برای اوردن اطلاعات جدید ثبت شده
rezaTavak
شنبه 19 شهریور 1384, 16:30 عصر
سلام
با دستور UpdateTable یا در DataEnvironment تنظیمات را بر اساس بدون بافرینگ ست کنید.
naderigh
یک شنبه 20 شهریور 1384, 07:10 صبح
من از DataEnvironment که استفاده نمیکنم ولی در خصوص UpdateTable اگر برایتان امکان دارد مقداری توضیح دهید با توجه به اینکه برنامه شبکه میباشد
naderigh
سه شنبه 22 شهریور 1384, 11:41 صبح
بفرمائید چگونه میشود از داخل برنامه شرط یا فیلتر local veiw را تعیین نمود و بر اساس ان نمایش داده شود
rezaTavak
سه شنبه 22 شهریور 1384, 23:42 عصر
سلام
اینکه شما از TableUpdate استفاده کرده باشید باید در Cuersorsetprop آنرا تعیین کنید.
در مورد سوال دم اگر با دستورات SQL است از where.
naderigh
چهارشنبه 23 شهریور 1384, 07:33 صبح
با سلام و تشکر
منظورم از این کار این است که در فرم به جای table از local veiw استفاده کردم و میخواهم در ان حذف اضافه و ... نمایم که در جدول اصلی اعمال شود حال شما فرض کنید که مثلا اطلاعات روز خاص 25/06/1384 را میخواهم این کار را انجام دهم و چند لحضه اطلاعات 26/06/1384 را
و از فیلتر کردن بانک هم نمیخواهم استفاده کنم چون تعداد رکوردهای بانک اصلی زیاد میباشد و وقت گیر است
naderigh
شنبه 02 مهر 1384, 11:24 صبح
اقایان میشود بفرمائید که چگونه میشود در local veiw از idx یا cdx بهره برد
rezaTavak
شنبه 02 مهر 1384, 15:18 عصر
سلام
دوست عزیز اصلا Local View جدول نیست!
یک پرس و جوی است. که از وری Select SQL ساخته می شود و ممکن است شما آن را UpdateAble کنید. بنابراین شما دیگر جدول اصلی را ندارید بلکه یک فایل از پرس و جوی دارید. این فایلها بر اساس چیزی که در SELECT است ساخته می شوند و ربطی به INDEX ندارند. آنها را نمیتوان ایندکس گذاری کرد. مگر اینکه اطلاعات View در به یک جدول فاکس معمولی تبدیل شوند. که این هم خودش داستان مفصلی دارد.
اما در مورد استفاده بهتر از جداول استفاده کنید و RushMore را به کمک گرفته و اون را هم کمک کنید.
شاید بسیاری از دوستان با این تکنولوژی آشنا باشند اما آنرا کمک نمی کنند. شاید بگید چطوری باید کمک بشه؟
خب اگه اینو بدونید که RushMore بر اساس ایندکس کار می کنه و اگر ایندکسی از قبل ساخته باشه از اون استفاده میکنه به این نتیجه می رسیم که برای سرعت در FOXPRO باید فیلدهایی که مثلا Set filter می شوند را Index ساخت و هر چند که این ایندکس به درد کابر نخورد اما سرعت را بالا میبرد.
با این تفاسیر RushMore را بکار گیرد و آنرا کمک کنید.
در ضمن بعضی اوقات هم آنرا از کار باید انداخت!
شما می دانید چه موقع؟
علی کلاهدوزان
یک شنبه 01 آبان 1384, 16:35 عصر
من توی dataenvorment بین table ها ارتباط برقرار میکنم (بین جدولها رو با خط به هم وصل میکنم ) ولی توی جستجوها بقیه رکوردها توی فایلهای دیگه پیدا نمی شه . کار من غلطه یا ...
rezaTavak
دوشنبه 02 آبان 1384, 08:27 صبح
سلام
یک امر مسلم اینه که وقتی ارتباطی برقرار بشه حرکت در جدول اول رکورد متناظر در جدول دوم را بدهد. خب معلومه که اینکار بر روی جداول تاثیر می گذارد.
علی کلاهدوزان
دوشنبه 02 آبان 1384, 09:11 صبح
خوب آخه این اتفاق واسه من نمی افته
علی کلاهدوزان
چهارشنبه 02 آذر 1384, 19:41 عصر
یه راه که راحت بشه با کد نویسی sql رو به فاکس چسبوند هست ؟
rezaTavak
چهارشنبه 02 آذر 1384, 21:13 عصر
سلام
دوست عزیز SQL یعنی چی؟
علی کلاهدوزان
پنج شنبه 03 آذر 1384, 09:27 صبح
هیچی بیخیال ولش کن . اصلا دیتابیس یعنی چه ؟
علی کلاهدوزان
پنج شنبه 03 آذر 1384, 09:58 صبح
بابا من میخوام sqlserver رو فاکس بچسبونم همین
binyaz2003
پنج شنبه 03 آذر 1384, 11:42 صبح
می خواین با بانکهای اس کیو ال کار کنید یا برای نصب برنامه تون مشکل دارید؟
علی کلاهدوزان
پنج شنبه 03 آذر 1384, 11:54 صبح
می خوام مثل .vb.nt که به sql وصلش میکنم با فاکس هم همین کار رو بکنم
rezaTavak
پنج شنبه 03 آذر 1384, 12:17 عصر
سلام
ببین دوست عزیز چند راه داری:
1- استفاده از ADO و DAO به صورت ویژوال
2- استفاده از Connection و Remote View به صورت ویژوال
3- استفاده از Connection و Remote View به صورت دستوری
خب حالا کدومش را می خواهی؟
برنامه نویسان بیسیک از روش ADo بیشتر استفاده میکنند.
اگر نحوه اتصال را می خواهی راجع به MySQL من گفته ام شما می توانید همین را برای هر دیتابیسی که دلتان خواست عمل کنید. فرقی نمی کند شما می توانید به تمام بانکها وصل شوید.
اما در مورد ADO هم کار ویژوال راحت است.
rezaTavak
پنج شنبه 03 آذر 1384, 12:18 عصر
اگر مشکلی هم داری بگو کمک کنم.
علی کلاهدوزان
پنج شنبه 03 آذر 1384, 12:28 عصر
خوب ado رو توی vb بلدم توی fox چیکار کنم ؟
hamed_m
پنج شنبه 03 آذر 1384, 14:56 عصر
برای کار با تابع sqlexec می خوام برای بانک های sql
نکته بسیار جالبی دیدم که دوستان اشاره نکرده بودند. در مجموع کار با این تابع سرعت و دقت به همراه داره و من سعی میکنم با توجه به حجم بالای استفاده از ریسورسهای کامپیوتر میزبان و شبکه حتی المقدور برای جلوگیری از خطا و پایین آوردن حجم استفاده از شبکه ازش استفاده کنم.
یه کرسر ایجاد کرده (البته دوستی می گفت کرسرهای بالای ده هزار رکورد یعنی برنامه نویس نمیدونه چه داره میکنه) و برای آپدیت هم رکوردهای تغییر یافته کرسر رو مارک میکنیم و برای هر تغییر (مجددا با استفاده از همون تابع) اسکیوال رو آپدیت میکنیم. به این شیوه تقریبا داریم مستقیم با اسکیوال کار میکنیم و دقت و امنیت تضمین شده است.
اول یه دی اس ان (بهتر از دی اس ان لس کار میکنه) ایجاد کنید. بعد یه دیتابیس و یه کانکشن با استفاده از دی اس ان مربوطه.
به ترتیب:
1- ایجاد دی اس ان:
SomeServer="10.10.10.1"
DECLARE INTEGER SQLConfigDataSource in odbccp32.DLL ;
INTEGER hwndParent, INTEGER fRequest, ;
STRING @lpszDriver, STRING @lpszAttributes
lcAttributes = "DSN=mydsn" + CHR(0) + ;
"Server="+SomeServer + CHR(0) + ;
"database=db"
#DEFINE ODBC_ADD_SYS_DSN 4
lnReturn = SQLConfigDataSource( 0, 4, "SQL Server" + CHR(0), lcAttributes )
IF lnReturn<>1
MESSAGEBOX("DSN creation failed",16)
ENDIF
نکته: ایجاد دی اس ان با یوزر و پس رو فراموش کنید.
2- ایجاد کانکشن:
open database mydb shared
CREATE CONNECTION remote_01 DATASOURCE 'mydsn' userid 'user' password 'pass'
3- استفاده از تابع:
lhn = SQLCONNECT("remote_01")
a="SELECT * FROM main"
result=SQLEXEC(lhn, a ,"main")
naderigh
یک شنبه 20 آذر 1384, 07:59 صبح
ایا شما نیز با Query فاکس 9 مشکل دارید برای group یا (یک فیلد)sum
شاگرد آرام
یک شنبه 20 آذر 1384, 19:53 عصر
برای حل این مشکل set enginebehavior را روی 70 set کنید
naderigh
دوشنبه 21 آذر 1384, 13:34 عصر
ممنون از لطف شما
naderigh
یک شنبه 27 آذر 1384, 08:22 صبح
با سلام
من میخواستم از طریق VIEW دسترسی به رکورد مورد نظر در جدول اصلی را داشته باشم یا به عبارتی همزمان با رکورد مورد نظر در VIEW رکورد جدول اصلی نیز در اختیار باشد
naderigh
دوشنبه 28 آذر 1384, 10:05 صبح
لطفا همکاری فرمائید
rezaTavak
دوشنبه 28 آذر 1384, 21:39 عصر
سلام
منظور از رکورد اصلی چیه؟ آیا تغییرات اعمال بشه؟ یا ؟
naderigh
سه شنبه 29 آذر 1384, 08:10 صبح
من VIEW را با فیلتر خاص مثلا اطلاعات یک روز را از یک جدول آورده ام و تمام ثبت و اصلاح و حذف از طریق VIEW مربوطه انجام میگیرد حال من میخواهیم در یک رکورد از جدول VIEW که هستم بتوانم دسترسی به همان رکورد از جدولی که VIEW از ان تهیه شده است داشته باشم
rezaTavak
چهارشنبه 30 آذر 1384, 07:55 صبح
سلام
خب در View از یک فیلد که شماره رکورد را بر می گرداند بهره ببرید. سپس از طریق این شماره رکورد رکورد اصلی را دسترسی خواهید داشت. مثلا:
select recno(),cName,cFamily from personal
naderigh
چهارشنبه 30 آذر 1384, 08:51 صبح
راهی غیر از این چون با این روش مشکل پیش می اید بدلیل اینکه تعداد کاربران از یک طرف و ورودی هر کدام و اصلاحات و حذف و ....
هدف من از VIEW سرعت بود چون تعداد رکوردهای جدول اصلی زیاد میباشد
rezaTavak
چهارشنبه 30 آذر 1384, 11:53 صبح
سلام
خب شرط محدود کردن تون را بگذار?د
پدرخوانده
چهارشنبه 21 دی 1384, 21:56 عصر
در صورتی که در مسیر فایل موردنیاز (dbf, index ,....) و یا هر آدرسی دیگری که دارای کاراکتر space (فاصله) باشد به هنگام خواندن با مشکل مواجه می شویم
برای رفع این مشکل چه باید کرد
(در نظر بگیرید که جداول در شاخه my document خود کاربر ذخیره شده و شما می خواهید آن را باز (use) کنید
جالب اینکه اگر از طریق خود فاکس باز کنید مشکلی نیست ولی همان آدرس را وقتی ذخیره می کنید (تابع dbf()( و می خواهید از طریق متغیر محتوی آن مجددا آن فایل را بخوانید با پیام خطا مواجه می شوید
rezaTavak
پنج شنبه 22 دی 1384, 11:28 صبح
سلام
باید از " استفاده کنید: مثلا "a:\ali reza\a.dbf"
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.