PersianTools Forums

Go Back   PersianTools Forums > برنامه نویسی و طراحی وب، سیستمهای مدیریت سایت > برنامه نویسی

Reply
 
امکانات بيشتر
Old 05-31-2004, 08:20 AM   #1
aliof
Registered User
 

Join Date: May 2004
Posts: 42
تبديل dbf از dos به windows

با سلام به تمامي دوستان وسروران گرامي
مشكل من اينه كه يه فايل dbf دارم كه توش به زبان فارسي متن نوشته شده با فارسي ساز vegaf يا sepand
( در dos ) چه طوري ميتونم اونو تبديل كتم به كد پيچ ويندوز و اونو تو ويندوز بخونم اگه كسي راجب اين موضوع چيزي ميدونه لطف كنه به ادرس من ايميل بزنه
با تشگر
Email:dr_mehdipor@yahoo.com or alialiof@yahoo.com
aliof is offline   Reply With Quote
Old 05-31-2004, 10:03 AM   #2
karagah
Registered User
 
karagah's Avatar
 

Join Date: May 2004
Posts: 64
دوست عزيز
در ويندوز با چه نرم افزاري ميخواهيد اون فايل رو بخونيد؟ اگر فايل تبديل به unicode بشه مشکل شما حل میشه یا حتما می خواهید کد پیج arabic باشه؟
__________________
Facing it, always facing it, that's the way to get through. Face it
karagah is offline   Reply With Quote
Old 06-02-2004, 07:51 AM   #3
aliof
Registered User
 

Join Date: May 2004
Posts: 42
Icon14 DBF(dos( to dbf windows

سلام بر دوست عزيز كار آگاه
اول از همه تشكر ميكنم بابت نامه ات واينكه زحمت كشيدي جواب من رو دادي
مسئله اينه كه من يه فايل dbf تو dos دارم كه توش فيلد نام و نام خانوادگيش فارسي نوشته شده البته فارسي ساز در محيط dos من sepand يا vegaf هست حالا ميخوام بتونم اين فايل رو بيارم تو ويندوز و با اكسل ببينم
ويندوز من هم ميلينيوم با پارسا 2001 هست البنه ويندوز 98 با پارسا 99 هم همين طور
براي من فرقي نميكنه خروجي بر اساس يوني كد باشه يا بر اساس عربي چون با خود پارسا ميشه اينا رو به تبديل كرد
با تشكر
aliof is offline   Reply With Quote
Old 06-02-2004, 01:29 PM   #4
Administrator
amir
Administrator
 

Join Date: Dec 2002
Posts: 928
بچه ها من يه پيشنهادي دارم !
اگه مي شه اين چيز ها رو ( همين راهنمايي در مورد تبديل كدينگ واينا ) تو همين فروم جواب بدين و براي هم ميل نزنين !!!!!
اينجوري همه كساني كه ميان مي تونند راه حل رو ببينند و دفعه بعد ديگه كسي سر اين موضوع گير نمي كنه !
ببخشيد هم فضولي كردم !! اما خداييش حيفه همه نخونند اين چيز ها رو.
amir is offline   Reply With Quote
Old 06-03-2004, 05:46 AM   #5
karagah
Registered User
 
karagah's Avatar
 

Join Date: May 2004
Posts: 64
Quote:
نوشته ای از amir
بچه ها من يه پيشنهادي دارم !
اگه مي شه اين چيز ها رو ( همين راهنمايي در مورد تبديل كدينگ واينا ) تو همين فروم جواب بدين و براي هم ميل نزنين !!!!!
اينجوري همه كساني كه ميان مي تونند راه حل رو ببينند و دفعه بعد ديگه كسي سر اين موضوع گير نمي كنه !
ببخشيد هم فضولي كردم !! اما خداييش حيفه همه نخونند اين چيز ها رو.
شما درست مي گين. چون براي پست 2 جوابي نيومد من حدس زدم دوستمون aliof منتظر میل هست .من هم همون پست 2 رو ميل كردم و پيشنهاد کردم که گفتگو رو تو فروم ادامه بدیم.
karagah is offline   Reply With Quote
Old 06-03-2004, 06:33 AM   #6
karagah
Registered User
 
karagah's Avatar
 

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 ?
بعد فایل dbf را پیدا کنید و باز کنید.

2- در پنجره command تایپ کنید:
Code:
SET PRINTER TO "C:\TEMP.TXT"
LIST TO PRINTER
حالا فایل DBF به فرمت TEXT تبدیل و در فایل C:\TEMP.TXT ذخیره شده.

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
- به worksheet برگردید و ستون هایی را که می خواهید به فارسی تبدیل شوند
انتخاب کنید و ماکروی convert را اجرا کنید. (از منوی tools->macro->macros)

** موقع انتخاب دقت کنید!این ماکرو فقط متونی که کاملا فارسی هستند را
درست تبدیل می کند. متن انگلیسی و اعداد را برعکس می کند.

** قبل از تبدیل فایل های دیگر با این روش باید فایل temp.txt را پاک کنید
چون foxpro هر بار آخر فایل اطلاعات را اضافه می کند.
karagah is offline   Reply With Quote
Old 06-03-2004, 08:22 PM   #7
Mehdi Hamedali
Registered User
 

Join Date: Nov 2003
Posts: 271
Send a message via MSN to Mehdi Hamedali Send a message via Yahoo to Mehdi Hamedali
Icon6

سلام به همه دوستان
دوست عزيز
راه جالبيه و فكر مي كنم كه از اين كوتاه تر هم نشه ولي اطمينان داري كه ميشه
يك نصيحت از يك دوست هميشه خودت اول يوزر استفاده كننده باش بعد برنامه رو به كسي ديگه نشون بده تا استفاده كنه البته ببخشيد كه اين حرف رو ميزنم
البته امير آقاي عزيز نگران نباشه هيچ كدم از بچه هاي اين جا اين جوري نيستن و اگه هستند متعلق به اين جا نيستند
قربان شما
MHa
__________________
زندگي زيباست همچون لبخندي بر لب كودك
كلاس آموزشي بانك هاي اطلاعاتي (پايگاه هاي داده اي) همين جاست


Mehdi Hamedali is offline   Reply With Quote
Old 06-03-2004, 10:55 PM   #8
karagah
Registered User
 
karagah's Avatar
 

Join Date: May 2004
Posts: 64
Quote:
نوشته ای از Mehdi Hamedali
سلام به همه دوستان
دوست عزيز
راه جالبيه و فكر مي كنم كه از اين كوتاه تر هم نشه ولي اطمينان داري كه ميشه
يك نصيحت از يك دوست هميشه خودت اول يوزر استفاده كننده باش ...
قربان شما
MHa
خيلي از نصيحت شما متشكرم ولي همونطور كه در پست قبلی نوشتم این روش با دو سیستم مختلف آزمایش شده و درست کار می کند.
karagah is offline   Reply With Quote
Old 06-28-2005, 01:41 PM   #9
behzad65
Registered User
 
behzad65's Avatar
 

Join Date: Jun 2004
Location: Tehran
Posts: 73
Send a message via MSN to behzad65 Send a message via Yahoo to behzad65
دوستان حجم فایل من خیلی هستش
حدود 1.5GB
مشکلی برام پیش نمیاد اگه این کار را انجام بدم؟
یعنی Excel میتونه یه text با حجم 1.5GB را باز کنه؟

حالا یه سوال دیگه
این ماکرو که کار تبدیل را انجام میده تمامی اعداد را برعکس میکنه
ماکروی دیگری وجود داره که دوباره اعداد را به حالت اصلی تبدیل کنه؟
behzad65 is offline   Reply With Quote
Old 06-28-2005, 07:22 PM   #10
karagah
Registered User
 
karagah's Avatar
 

Join Date: May 2004
Posts: 64
Quote:
نوشته ای از behzad65
دوستان حجم فایل من خیلی هستش
حدود 1.5GB
مشکلی برام پیش نمیاد اگه این کار را انجام بدم؟
یعنی Excel میتونه یه text با حجم 1.5GB را باز کنه؟

حالا یه سوال دیگه
این ماکرو که کار تبدیل را انجام میده تمامی اعداد را برعکس میکنه
ماکروی دیگری وجود داره که دوباره اعداد را به حالت اصلی تبدیل کنه؟
دوست عزيز
1- حتما مي دونيد كه اكسل يه برنامه بانك اطلاعاتي نيست.و براي کارهای بزرگ نمي شه ازش استفاده كرد. چون تعداد سطر ها وستون ها در اكسل محدوده. در هر شيت حداكثر 256 ستون و 65536 سطر ميتونيد داشته باشيد . ضمنا براي فايل هاي بزرگ سرعت اکسل کم است و برای انجام محاسبات و گزارش گیری مناسب نیست.

اگر تعداد رکورد ها یا فیلدهای dbf شما بیش از حد توان اکسل است باید فایل را چند قسمت کنید و هر قسمت را به اکسل بیاورید و ماکرو را اجرا کنید بعد تمام قسمت ها در یک برنامه دیتابیس واقعی کنار هم قرار دهید.
راه دیگر قرار دادن هر قسمت از DBF در یک شیت جداگانه است ولی ممكن ساختار DBF طوری باشد که نتونید از این روش استفاده کنید.

2- این ماکرو فقط روی سلول هایی که انتخاب شده اند عمل می کند، پس کافی است ستون های اعداد را انتخاب نکنید.
karagah is offline   Reply With Quote
Old 06-29-2005, 05:41 PM   #11
behzad65
Registered User
 
behzad65's Avatar
 

Join Date: Jun 2004
Location: Tehran
Posts: 73
Send a message via MSN to behzad65 Send a message via Yahoo to behzad65
خیلی ممنون
اتفاقا من فقط میخوام فیلد های عددی را تبدیل کنم
ولی راه حلش را گیر آوردم
با دوباره اجرا کردن ماکرو همه چیز درست میشه.
behzad65 is offline   Reply With Quote
Old 12-14-2005, 04:43 AM   #12
desertfox
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.
موفق باشيد.
desertfox is offline   Reply With Quote
Old 03-06-2006, 06:38 PM   #13
vafalik
Registered User
 

Join Date: Feb 2004
Posts: 2
کمک!

دوستان عزیز، راهنائیهای شما رو خوندم و عینا عمل کردم ولی درست نشد. حس میکنم یه جایی داده های من مشکل داره. شما در مورد سپند حرف زدین ولی داده های من vegaf هست.فکر میکنم جدول map تو اون ماکرو درست تبدیل نمیکنه.
آیا در اکسل باید فونت خاصی رو انتخاب کنم؟ یا موقع بردن به اکسل باید نوع دیگری غیر از windows ansi رو انتخاب کنم؟ شدیدا به کمک احتیاج دارم. لطفا به دادم برسید.
vafalik@gmail.com
متشکرم - یه دنیا
vafalik is offline   Reply With Quote
Old 03-07-2006, 12:27 AM   #14
saeedsmk
مدیر بازنشسته
 
saeedsmk's Avatar
 

Join Date: Sep 2003
Posts: 1,523
یه سرچی توی قسمت وی بی بکن یه کدی بود که همین کار رو میکرد ببین جواب میده یا نه
__________________
در دنيايي كه مرگ شكارچي آن است بايد شكارچي بود.
300 the movie
saeedsmk is offline   Reply With Quote
Old 03-15-2006, 10:33 AM   #15
Trusted Member
mazoolagh
کاربر فعال شبکه و صفحات استاتیک
 
mazoolagh's Avatar
 

Join Date: Apr 2004
Posts: 3,054
بهتره که فایل dbf رو اول به access ایمپورت و کد تبدیل رو در محیط access اجرا کرد.

کد تبدیل هم چیزی جز یک جایگزینی ساده نیست.
__________________


mazoolagh is offline   Reply With Quote
Reply

امکانات بيشتر

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4.5. The time now is 06:40 AM.

PersianTools RSS Feeds


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.