![]() |
|
|
#1 |
|
Registered User
Join Date: May 2004
Posts: 42
|
تبديل dbf از dos به windows
با سلام به تمامي دوستان وسروران گرامي
مشكل من اينه كه يه فايل dbf دارم كه توش به زبان فارسي متن نوشته شده با فارسي ساز vegaf يا sepand ( در dos ) چه طوري ميتونم اونو تبديل كتم به كد پيچ ويندوز و اونو تو ويندوز بخونم اگه كسي راجب اين موضوع چيزي ميدونه لطف كنه به ادرس من ايميل بزنه با تشگر Email:dr_mehdipor@yahoo.com or alialiof@yahoo.com |
|
|
|
|
|
#2 |
|
Registered User
Join Date: May 2004
Posts: 64
|
دوست عزيز
در ويندوز با چه نرم افزاري ميخواهيد اون فايل رو بخونيد؟ اگر فايل تبديل به unicode بشه مشکل شما حل میشه یا حتما می خواهید کد پیج arabic باشه؟
__________________
Facing it, always facing it, that's the way to get through. Face it |
|
|
|
|
|
#3 |
|
Registered User
Join Date: May 2004
Posts: 42
|
سلام بر دوست عزيز كار آگاه
اول از همه تشكر ميكنم بابت نامه ات واينكه زحمت كشيدي جواب من رو دادي مسئله اينه كه من يه فايل dbf تو dos دارم كه توش فيلد نام و نام خانوادگيش فارسي نوشته شده البته فارسي ساز در محيط dos من sepand يا vegaf هست حالا ميخوام بتونم اين فايل رو بيارم تو ويندوز و با اكسل ببينم ويندوز من هم ميلينيوم با پارسا 2001 هست البنه ويندوز 98 با پارسا 99 هم همين طور براي من فرقي نميكنه خروجي بر اساس يوني كد باشه يا بر اساس عربي چون با خود پارسا ميشه اينا رو به تبديل كرد با تشكر |
|
|
|
|
|
#4 |
|
Administrator
Join Date: Dec 2002
Posts: 928
|
بچه ها من يه پيشنهادي دارم !
اگه مي شه اين چيز ها رو ( همين راهنمايي در مورد تبديل كدينگ واينا ) تو همين فروم جواب بدين و براي هم ميل نزنين !!!!! اينجوري همه كساني كه ميان مي تونند راه حل رو ببينند و دفعه بعد ديگه كسي سر اين موضوع گير نمي كنه ! ببخشيد هم فضولي كردم !! اما خداييش حيفه همه نخونند اين چيز ها رو. |
|
|
|
|
|
#5 | |
|
Registered User
Join Date: May 2004
Posts: 64
|
Quote:
شما درست مي گين. چون براي پست 2 جوابي نيومد من حدس زدم دوستمون aliof منتظر میل هست .من هم همون پست 2 رو ميل كردم و پيشنهاد کردم که گفتگو رو تو فروم ادامه بدیم. |
|
|
|
|
|
|
#6 |
|
Registered User
Join Date: May 2004
Posts: 64
|
دوست عزیز
روش زیر با فارسی سازهای سازگار با sepand وfoxpro 2.6 و excel XP یا excel 2000 در ویندور های xp و 2003 آزمایش شده و درست جواب می دهد: برای مشاهده فایل dbf در excel باید این کارها را انجام دهید: 1- در محیط Foxpro برای dos مثلا (Foxpro 2.6) ، فایل DBF را باز کنید: در پنجره command تایپ کنید: Code:
use ? 2- در پنجره command تایپ کنید: Code:
SET PRINTER TO "C:\TEMP.TXT" LIST TO PRINTER 3-در EXCEL از منوی فایل ، open را انتخاب کنید - در قسمت files of type گزینه textfiles را انتخاب کنید. بعد c:\temp.txt را پیدا کنید و آنرا open کنید. حالا text import wizard باز می شود در اولین مرحله آن: - در قسمت original data type گزینه fixed width - در قسمت file origin گزینه windows(ansi) - در قسمت start import at row هم 1 را انتخاب کنید. بعد هم finish را کلیک کنید. 4- فایل را با فرمت microsoft excel workbook ذخیره کنید. 5-visual basic editor را اجرا کنید(از منوی tools) - در قسمت project روی ThisWorkBook دابل کلیک کنید. - صفحه ای برای کد نویسی باز میشود، ماکرو زیر را در آن paste کنید. Code:
Sub convert()
'Simple VEGAF/SAHER and compatibles Text Converter
'for ms excel
'Code and mapping by :
'Karagah (pt_karagah at yahoo dot com)
'you may use it freely as long as this notice
'remains intact. ENjoy Oldies! :)
Dim map(255) As Integer
Dim myString As String
Dim myChar As String * 1
For i = 0 To 255
map(i) = i
Next
map(128) = 48: map(129) = 49: map(130) = 50: map(131) = 51:
map(132) = 52: map(133) = 53: map(134) = 54: map(135) = 55:
map(136) = 56: map(137) = 57: map(138) = 161: map(139) = 45:
map(140) = 191: map(141) = 194: map(142) = 198: map(143) = 193:
map(144) = 199: map(145) = 199: map(146) = 200: map(147) = 200:
map(148) = 129: map(149) = 129: map(150) = 202: map(151) = 202:
map(152) = 203: map(153) = 203: map(154) = 204: map(155) = 204:
map(156) = 141: map(157) = 141: map(158) = 205: map(159) = 205:
map(160) = 206: map(161) = 206: map(162) = 207: map(163) = 208:
map(164) = 209: map(165) = 210: map(166) = 142: map(167) = 211:
map(168) = 211: map(169) = 212: map(170) = 212: map(171) = 213:
map(172) = 213: map(173) = 214: map(174) = 214: map(175) = 216:
map(224) = 217: map(225) = 218: map(226) = 218: map(227) = 218:
map(228) = 218: map(229) = 219: map(230) = 219: map(231) = 219:
map(232) = 219: map(233) = 221: map(234) = 221: map(235) = 222:
map(236) = 222: map(237) = 223: map(238) = 223: map(239) = 144:
map(240) = 144: map(241) = 225: map(243) = 225: map(244) = 227:
map(245) = 227: map(246) = 228: map(247) = 228: map(248) = 230:
map(249) = 229: map(250) = 229: map(251) = 229: map(252) = 237:
map(253) = 237: map(254) = 237:
For Each c In Selection
If c.Value <> "" Then
myString = c.Value
temp = ""
For i = Len(myString) To 1 Step -1
myChar = Chr(map(Asc(Mid(myString, i, 1))))
temp = temp + myChar
Next
c.FormulaR1C1 = temp
End If
Next
End Sub
انتخاب کنید و ماکروی convert را اجرا کنید. (از منوی tools->macro->macros) ** موقع انتخاب دقت کنید!این ماکرو فقط متونی که کاملا فارسی هستند را درست تبدیل می کند. متن انگلیسی و اعداد را برعکس می کند. ** قبل از تبدیل فایل های دیگر با این روش باید فایل temp.txt را پاک کنید چون foxpro هر بار آخر فایل اطلاعات را اضافه می کند. |
|
|
|
|
|
#7 |
|
Registered User
|
سلام به همه دوستان
دوست عزيز راه جالبيه و فكر مي كنم كه از اين كوتاه تر هم نشه ولي اطمينان داري كه ميشه يك نصيحت از يك دوست هميشه خودت اول يوزر استفاده كننده باش بعد برنامه رو به كسي ديگه نشون بده تا استفاده كنه البته ببخشيد كه اين حرف رو ميزنم البته امير آقاي عزيز نگران نباشه هيچ كدم از بچه هاي اين جا اين جوري نيستن و اگه هستند متعلق به اين جا نيستند قربان شما MHa
__________________
زندگي زيباست همچون لبخندي بر لب كودك كلاس آموزشي بانك هاي اطلاعاتي (پايگاه هاي داده اي) همين جاست ![]()
|
|
|
|
|
|
#8 | |
|
Registered User
Join Date: May 2004
Posts: 64
|
Quote:
ولي همونطور كه در پست قبلی نوشتم این روش با دو سیستم مختلف آزمایش شده و درست کار می کند. |
|
|
|
|
|
|
#9 |
|
Registered User
|
دوستان حجم فایل من خیلی هستش
حدود 1.5GB مشکلی برام پیش نمیاد اگه این کار را انجام بدم؟ یعنی Excel میتونه یه text با حجم 1.5GB را باز کنه؟ حالا یه سوال دیگه این ماکرو که کار تبدیل را انجام میده تمامی اعداد را برعکس میکنه ماکروی دیگری وجود داره که دوباره اعداد را به حالت اصلی تبدیل کنه؟ |
|
|
|
|
|
#10 | |
|
Registered User
Join Date: May 2004
Posts: 64
|
Quote:
1- حتما مي دونيد كه اكسل يه برنامه بانك اطلاعاتي نيست.و براي کارهای بزرگ نمي شه ازش استفاده كرد. چون تعداد سطر ها وستون ها در اكسل محدوده. در هر شيت حداكثر 256 ستون و 65536 سطر ميتونيد داشته باشيد . ضمنا براي فايل هاي بزرگ سرعت اکسل کم است و برای انجام محاسبات و گزارش گیری مناسب نیست. اگر تعداد رکورد ها یا فیلدهای dbf شما بیش از حد توان اکسل است باید فایل را چند قسمت کنید و هر قسمت را به اکسل بیاورید و ماکرو را اجرا کنید بعد تمام قسمت ها در یک برنامه دیتابیس واقعی کنار هم قرار دهید. راه دیگر قرار دادن هر قسمت از DBF در یک شیت جداگانه است ولی ممكن ساختار DBF طوری باشد که نتونید از این روش استفاده کنید. 2- این ماکرو فقط روی سلول هایی که انتخاب شده اند عمل می کند، پس کافی است ستون های اعداد را انتخاب نکنید. |
|
|
|
|
|
|
#11 |
|
Registered User
|
خیلی ممنون
اتفاقا من فقط میخوام فیلد های عددی را تبدیل کنم ولی راه حلش را گیر آوردم با دوباره اجرا کردن ماکرو همه چیز درست میشه. |
|
|
|
|
|
#12 |
|
Registered User
Join Date: Dec 2005
Posts: 2
|
تبديل Vegaf به Unicode
با تشکر از "کارگاه" من اصلاحاتی در قسمت تبديل اعداد انجام دادم که کد اصلاح شده به اين صورت است:
Sub convert() 'Simple VEGAF/SAHER and compatibles Text Converter 'for ms excel 'Code and mapping by : 'Karagah (pt_karagah at yahoo dot com) 'Code Revision by: 'Sir Mojtaba (mahsuli at civil.sharif.edu) 'you may use it freely as long as this notice 'remains intact. ENjoy Oldies! ![]() Dim map(255) As Integer Dim myString As String Dim myChar As String * 1 For i = 0 To 255 map(i) = i Next map(128) = 48: map(129) = 49: map(130) = 50: map(131) = 51: map(132) = 52: map(133) = 53: map(134) = 54: map(135) = 55: map(136) = 56: map(137) = 57: map(138) = 161: map(139) = 45: map(140) = 191: map(141) = 194: map(142) = 198: map(143) = 193: map(144) = 199: map(145) = 199: map(146) = 200: map(147) = 200: map(148) = 129: map(149) = 129: map(150) = 202: map(151) = 202: map(152) = 203: map(153) = 203: map(154) = 204: map(155) = 204: map(156) = 141: map(157) = 141: map(158) = 205: map(159) = 205: map(160) = 206: map(161) = 206: map(162) = 207: map(163) = 208: map(164) = 209: map(165) = 210: map(166) = 142: map(167) = 211: map(168) = 211: map(169) = 212: map(170) = 212: map(171) = 213: map(172) = 213: map(173) = 214: map(174) = 214: map(175) = 216: map(224) = 217: map(225) = 218: map(226) = 218: map(227) = 218: map(228) = 218: map(229) = 219: map(230) = 219: map(231) = 219: map(232) = 219: map(233) = 221: map(234) = 221: map(235) = 222: map(236) = 222: map(237) = 223: map(238) = 223: map(239) = 144: map(240) = 144: map(241) = 225: map(243) = 225: map(244) = 227: map(245) = 227: map(246) = 228: map(247) = 228: map(248) = 230: map(249) = 229: map(250) = 229: map(251) = 229: map(252) = 237: map(253) = 237: map(254) = 237: For Each c In Selection If c.Value <> "" Then myString = c.Value temp = "" endi = Len(myString) h: For i = endi To 1 Step -1 myChar = Chr(map(Asc(Mid(myString, i, 1)))) If (myChar = "0") Or (myChar = "1") Or (myChar = "2") Or (myChar = "3") Or (myChar = "4") Or (myChar = "5") Or (myChar = "6") Or (myChar = "7") Or (myChar = "8") Or (myChar = "9") Then starti = i flag = True Do i = i - 1 If i > 0 Then myChar = Chr(map(Asc(Mid(myString, i, 1)))) Loop Until (i < 1) Or ((myChar <> "0") And (myChar <> "1") And (myChar <> "2") And (myChar <> "3") And (myChar <> "4") And (myChar <> "5") And (myChar <> "6") And (myChar <> "7") And (myChar <> "8") And (myChar <> "9")) endi = i + 1 Exit For End If temp = temp + myChar Next If flag Then For i = endi To starti Step 1 myChar = Chr(map(Asc(Mid(myString, i, 1)))) temp = temp + myChar Next endi = endi - 1 flag = False GoTo h: End If c.FormulaR1C1 = temp End If Next End Sub ضمنا يادتون باشه که بعد از تبديل و انجام مراحل ذکر شده توسط "کارگاه" بايد اين Database رو با Engoding: '<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">' Save کنيد و بعد با IE، باز Encoding رو به Arabic (Windows برگردونيد و باز هم جدول رو Copy n Paste کنيد به Excel. موفق باشيد. |
|
|
|
|
|
#13 |
|
Registered User
Join Date: Feb 2004
Posts: 2
|
کمک!
دوستان عزیز، راهنائیهای شما رو خوندم و عینا عمل کردم ولی درست نشد. حس میکنم یه جایی داده های من مشکل داره. شما در مورد سپند حرف زدین ولی داده های من vegaf هست.فکر میکنم جدول map تو اون ماکرو درست تبدیل نمیکنه.
آیا در اکسل باید فونت خاصی رو انتخاب کنم؟ یا موقع بردن به اکسل باید نوع دیگری غیر از windows ansi رو انتخاب کنم؟ شدیدا به کمک احتیاج دارم. لطفا به دادم برسید. vafalik@gmail.com متشکرم - یه دنیا ![]() |
|
|
|
|
|
#14 |
|
مدیر بازنشسته
Join Date: Sep 2003
Posts: 1,523
|
یه سرچی توی قسمت وی بی بکن یه کدی بود که همین کار رو میکرد ببین جواب میده یا نه
|
|
|
|
|
|
#15 |
|
کاربر فعال شبکه و صفحات استاتیک
Join Date: Apr 2004
Posts: 3,053
|
بهتره که فایل dbf رو اول به access ایمپورت و کد تبدیل رو در محیط access اجرا کرد.
کد تبدیل هم چیزی جز یک جایگزینی ساده نیست.
__________________
![]() |
|
|
|
![]() |
| امکانات بيشتر | |
|
|