برگزیده های پرشین تولز

تبديل dbf از dos به windows

aliof

کاربر تازه وارد
تاریخ عضویت
20 می 2004
نوشته‌ها
31
لایک‌ها
0
با سلام به تمامي دوستان وسروران گرامي
مشكل من اينه كه يه فايل dbf دارم كه توش به زبان فارسي متن نوشته شده با فارسي ساز vegaf يا sepand
( در dos ) چه طوري ميتونم اونو تبديل كتم به كد پيچ ويندوز و اونو تو ويندوز بخونم اگه كسي راجب اين موضوع چيزي ميدونه لطف كنه به ادرس من ايميل بزنه
با تشگر
Email:[email protected] or [email protected]
 

karagah

کاربر تازه وارد
تاریخ عضویت
22 می 2004
نوشته‌ها
63
لایک‌ها
0
دوست عزيز
در ويندوز با چه نرم افزاري ميخواهيد اون فايل رو بخونيد؟ اگر فايل تبديل به unicode بشه مشکل شما حل میشه یا حتما می خواهید کد پیج arabic باشه؟
 

aliof

کاربر تازه وارد
تاریخ عضویت
20 می 2004
نوشته‌ها
31
لایک‌ها
0
سلام بر دوست عزيز كار آگاه
اول از همه تشكر ميكنم بابت نامه ات واينكه زحمت كشيدي جواب من رو دادي
مسئله اينه كه من يه فايل dbf تو dos دارم كه توش فيلد نام و نام خانوادگيش فارسي نوشته شده البته فارسي ساز در محيط dos من sepand يا vegaf هست حالا ميخوام بتونم اين فايل رو بيارم تو ويندوز و با اكسل ببينم
ويندوز من هم ميلينيوم با پارسا 2001 هست البنه ويندوز 98 با پارسا 99 هم همين طور
براي من فرقي نميكنه خروجي بر اساس يوني كد باشه يا بر اساس عربي چون با خود پارسا ميشه اينا رو به تبديل كرد
با تشكر
 

amir

مدیران قدیمی
تاریخ عضویت
15 دسامبر 2002
نوشته‌ها
894
لایک‌ها
2
بچه ها من يه پيشنهادي دارم !
اگه مي شه اين چيز ها رو ( همين راهنمايي در مورد تبديل كدينگ واينا ) تو همين فروم جواب بدين و براي هم ميل نزنين !!!!!
اينجوري همه كساني كه ميان مي تونند راه حل رو ببينند و دفعه بعد ديگه كسي سر اين موضوع گير نمي كنه !
ببخشيد هم فضولي كردم !! اما خداييش حيفه همه نخونند اين چيز ها رو.
 

karagah

کاربر تازه وارد
تاریخ عضویت
22 می 2004
نوشته‌ها
63
لایک‌ها
0
به نقل از amir :
بچه ها من يه پيشنهادي دارم !
اگه مي شه اين چيز ها رو ( همين راهنمايي در مورد تبديل كدينگ واينا ) تو همين فروم جواب بدين و براي هم ميل نزنين !!!!!
اينجوري همه كساني كه ميان مي تونند راه حل رو ببينند و دفعه بعد ديگه كسي سر اين موضوع گير نمي كنه !
ببخشيد هم فضولي كردم !! اما خداييش حيفه همه نخونند اين چيز ها رو.

:) شما درست مي گين. چون براي پست 2 جوابي نيومد من حدس زدم دوستمون aliof منتظر میل هست .من هم همون پست 2 رو ميل كردم و پيشنهاد کردم که گفتگو رو تو فروم ادامه بدیم.
 

karagah

کاربر تازه وارد
تاریخ عضویت
22 می 2004
نوشته‌ها
63
لایک‌ها
0
دوست عزیز
روش زیر با فارسی سازهای سازگار با sepand وfoxpro 2.6 و
excel XP یا excel 2000 در ویندور های xp و 2003
آزمایش شده و درست جواب می دهد:

برای مشاهده فایل dbf در excel باید این کارها را انجام دهید:
1- در محیط Foxpro برای dos مثلا (Foxpro 2.6) ، فایل DBF را باز کنید:
در پنجره command تایپ کنید:
کد:
use ?
بعد فایل dbf را پیدا کنید و باز کنید.

2- در پنجره command تایپ کنید:
کد:
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 کنید.
کد:
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 هر بار آخر فایل اطلاعات را اضافه می کند.
 

Mehdi Hamedali

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2003
نوشته‌ها
267
لایک‌ها
0
سن
41
سلام به همه دوستان
دوست عزيز
راه جالبيه و فكر مي كنم كه از اين كوتاه تر هم نشه ولي اطمينان داري كه ميشه
يك نصيحت از يك دوست هميشه خودت اول يوزر استفاده كننده باش بعد برنامه رو به كسي ديگه نشون بده تا استفاده كنه البته ببخشيد كه اين حرف رو ميزنم
البته امير آقاي عزيز نگران نباشه هيچ كدم از بچه هاي اين جا اين جوري نيستن و اگه هستند متعلق به اين جا نيستند
قربان شما
MHa
 

karagah

کاربر تازه وارد
تاریخ عضویت
22 می 2004
نوشته‌ها
63
لایک‌ها
0
به نقل از Mehdi Hamedali :
سلام به همه دوستان
دوست عزيز
راه جالبيه و فكر مي كنم كه از اين كوتاه تر هم نشه ولي اطمينان داري كه ميشه
يك نصيحت از يك دوست هميشه خودت اول يوزر استفاده كننده باش ...
قربان شما
MHa
خيلي از نصيحت شما متشكرم :) ولي همونطور كه در پست قبلی نوشتم این روش با دو سیستم مختلف آزمایش شده و درست کار می کند.
 

behzad65

کاربر تازه وارد
تاریخ عضویت
3 ژوئن 2004
نوشته‌ها
65
لایک‌ها
0
محل سکونت
Tehran
دوستان حجم فایل من خیلی هستش
حدود 1.5GB
مشکلی برام پیش نمیاد اگه این کار را انجام بدم؟
یعنی Excel میتونه یه text با حجم 1.5GB را باز کنه؟

حالا یه سوال دیگه
این ماکرو که کار تبدیل را انجام میده تمامی اعداد را برعکس میکنه
ماکروی دیگری وجود داره که دوباره اعداد را به حالت اصلی تبدیل کنه؟
 

karagah

کاربر تازه وارد
تاریخ عضویت
22 می 2004
نوشته‌ها
63
لایک‌ها
0
به نقل از behzad65 :
دوستان حجم فایل من خیلی هستش
حدود 1.5GB
مشکلی برام پیش نمیاد اگه این کار را انجام بدم؟
یعنی Excel میتونه یه text با حجم 1.5GB را باز کنه؟

حالا یه سوال دیگه
این ماکرو که کار تبدیل را انجام میده تمامی اعداد را برعکس میکنه
ماکروی دیگری وجود داره که دوباره اعداد را به حالت اصلی تبدیل کنه؟

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

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

2- این ماکرو فقط روی سلول هایی که انتخاب شده اند عمل می کند، پس کافی است ستون های اعداد را انتخاب نکنید.
 

behzad65

کاربر تازه وارد
تاریخ عضویت
3 ژوئن 2004
نوشته‌ها
65
لایک‌ها
0
محل سکونت
Tehran
خیلی ممنون
اتفاقا من فقط میخوام فیلد های عددی را تبدیل کنم
ولی راه حلش را گیر آوردم
با دوباره اجرا کردن ماکرو همه چیز درست میشه.
 

desertfox

کاربر تازه وارد
تاریخ عضویت
2 دسامبر 2005
نوشته‌ها
1
لایک‌ها
0
با تشکر از "کارگاه" من اصلاحاتی در قسمت تبديل اعداد انجام دادم که کد اصلاح شده به اين صورت است:
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.
موفق باشيد.
 

vafalik

کاربر تازه وارد
تاریخ عضویت
16 فوریه 2004
نوشته‌ها
2
لایک‌ها
0
دوستان عزیز، راهنائیهای شما رو خوندم و عینا عمل کردم ولی درست نشد. حس میکنم یه جایی داده های من مشکل داره. شما در مورد سپند حرف زدین ولی داده های من vegaf هست.فکر میکنم جدول map تو اون ماکرو درست تبدیل نمیکنه.
آیا در اکسل باید فونت خاصی رو انتخاب کنم؟ یا موقع بردن به اکسل باید نوع دیگری غیر از windows ansi رو انتخاب کنم؟ شدیدا به کمک احتیاج دارم. لطفا به دادم برسید.
[email protected]
متشکرم - یه دنیا:(
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
یه سرچی توی قسمت وی بی بکن یه کدی بود که همین کار رو میکرد ببین جواب میده یا نه
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
بهتره که فایل dbf رو اول به access ایمپورت و کد تبدیل رو در محیط access اجرا کرد.

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

kavehmb

کاربر تازه وارد
تاریخ عضویت
12 نوامبر 2006
نوشته‌ها
5
لایک‌ها
0
محل سکونت
Tehran
من این برنامه را پیدا کردم ولی demo هست و فقط 10 رکورد را نشان میدهد!
http://helia2000.tripod.com/index_files/Page944.htm
البته مثل اینکه پروین 2001 هم چنین کاری میکنه!

کسی کرک این برنامه ها را نداره؟
 

f_h1360

کاربر تازه وارد
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
6
لایک‌ها
0
سلام دوستان
من این ماکرو رو فایل با 50000 رکورد اجرا کردم بسیار خوب بود فقط بعضی کلمات رو به هم می چسباند.به هر حال ممنون
در ضمن من یک dbf با 1000000 رکورد دارم نمی توانم قسمت قسمتش کنم . می خواهم اون رو مستقیماٌ به Sql server واردش کنم لطفاً راهنماییم بکنید که چطور این کار را انجام دهم
دست شما درد نکنه
 

rmb_ali

Registered User
تاریخ عضویت
15 مارس 2003
نوشته‌ها
1,218
لایک‌ها
21
من خودم بالاخره استين بالا زدم و يه برنامه براي اينكار نوشتم فقط در مورد فيلدهايي كه بصورت تركيبي عدد و نوشته دارن مشكل دارم كه اگر كسي كمك كنه ممنون ميشم


اينم لينك دانلودش
 

f_h1360

کاربر تازه وارد
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
6
لایک‌ها
0
سلام
من هم خواستم بنویسم ولی نتونستم dbf رو توی vb6 باز کنم می خوام فیلد فیلد از dbf بخونم بعد تبدیلش کنم بعد به sql ارسالش بکنم
هرکس میتونه خواهش می کنم کمکم کنه
 
بالا