PDA

View Full Version : سوال: مشکل‌حرف‌‌ی در اکسس



h1and1saman
پنج شنبه 22 بهمن 1394, 13:25 عصر
سلام
من یه فرم برای وارد کردن اطلاعات دارم که با ado به اکسس اتصال داره
حالا وقتی اطلاعات رو از طریق فرم وارد میکنم و ذخیره میکنم کلماتی که حرف ی دارند رو موقع جستجو پیدا نمیکنه.
مثلا من نام رو وارد کردم حسین
وقتی‌اکسس‌رو دستی باز میکنم و حسین رو جستجو میکنم با این که در‌پایگاه داده هست ولی‌پیدا نمیکنه اما اگه حسین رو به این صورت حس*ن جستجو میکنم پیدا میکنه .یعنی با حرف‌ی مشکل‌داره
راه حل چیه

اینو هم بگم که وقتی در اکسس دستی حسین رو وارد میکنم موقع جستحو پیدا میکنه اما‌حسین که از طریق فرم ذخیره شده رو مشکل‌داره

User SA
پنج شنبه 22 بهمن 1394, 17:17 عصر
باسلام

به نظر میرسه مشکل از فونت انتخب شده باشه

دقت کنید فونت تکست گرفتن اطلاعات و فونت تکست جستجو یکسان باشه (مقصود تایب فارسی و عربی است)

حرف "ی" و "ي" متفاوت است

پیروز باشید

h1and1saman
پنج شنبه 22 بهمن 1394, 21:25 عصر
فونت تکست گرفتن اطلاعات نازنین هست که فارسیه
اما تکس جستجو نداریم یعنی من پایگاه داده اکسس رو دستی باز میکنم وctrl+F رو می زنم و جستجو می کنم مثلا همون حسین رو پیدا نمیکنه .برای اینکارم دلیل دیگه ای دارم وگرنه قسمت جستجوم داره کار میکنه بدون مشکل


دلیلی که فرومودید درسته دقیقا مشکل همینه ی با ی عربی اما راه حل رو نتونستم پیدا کنم

چیزی که الان فهمیدم موقع جستجو در اکسس وقتی کلید ctrl+shift سمت راست رو می زنم و سرچ میکنم درست میشه اما این حالت فکر کنم همون عربی هست. که حروف بعضایشون چیز دیگه ای می زنند .با این اوصاف فرمایش شما درسته اگه میشه راهنمایی بفرماید چطور اصلاح کنم

علیرضا5
جمعه 23 بهمن 1394, 09:53 صبح
از تکست باکس کامپوننت codjock استفاده کنید

abas1388
جمعه 23 بهمن 1394, 13:35 عصر
سلام آقا علیرضا
یعنی با استفاده از این تکست باکس دیگر مشکل تشخیص حروف ی و ک فارسی و عربی باهرکیبردی پیش نمی آید ؟
ممنون

h1and1saman
جمعه 23 بهمن 1394, 14:45 عصر
من پکیج کامل codjock رو دانلود کردم اما تکست باکس نداره
میشهزاگه کسی داره کامپونتش رو قرار بده

peikesms123
جمعه 23 بهمن 1394, 15:02 عصر
به نظرم قبل از وارد کردن اطلاعات و جستجو، حرفهارو جایگزین کن راحت تره

h1and1saman
جمعه 23 بهمن 1394, 17:05 عصر
چگونه؟راهنمایی کنید لطفا

علیرضا5
جمعه 23 بهمن 1394, 19:37 عصر
این پست رو مطالعه کنید (http://bakosar.mihanblog.com/post/26)

h1and1saman
شنبه 24 بهمن 1394, 17:32 عصر
با این هم مشکلم برطرف نشد متاسفانه
من دارم از دیتابیسم خروجی اکسل میگیرم با این مشکل بعد از خروجی دادن وقتی در اکسل کلمه ای رو سرچ می زنم که ی داره پیدا نمیکنه

برای خروجی اکسل ۱- از دیتاگرید vsflex استفاده میکنم ۲- از fast report استفاده می کنم که هر دو متاسفانه فقط همین یک مشکل رو دارند
راه حلی برای خروجی اکسل صحیح گرفتن دارید ؟

naeim_1369
شنبه 24 بهمن 1394, 19:41 عصر
سلام،
من هم با نظر peikesms123 (http://barnamenevis.org/member.php?106109-peikesms123) عزیز موافقم، بهترین و ساده ترین راه اینه که قبل از مقایسه برای Find هر دو رو به یک حرف واحد Replace کنید، اینطوری 2 کلمه رو به 2 متغیر وارد کنید و هرتغییری رو فقط روی متغیر انجام بدید تا اصل کلمه حفظ بشه، پس از تغییرات هر دو متغیر، با هم مقایسه کنید؛
توی نمونه ای که گذاشتم کلمات (الله و اله) ، (هر دو نوع حرف ی) ، (هر دو نوع حرف ک) ، (حرف آ و ا) و (فاصله بین دو کلمه مانند علیرضا=علی رضا) رو یکسان تلقی میکنه. ضمناً مقدار TextBox ها تغییر نمیکنه و فقط مقادیر Str1 و Str2 بعد از تغییرات باهم مقایسه میشه:

علیرضا5
دوشنبه 26 بهمن 1394, 14:43 عصر
سلام
ببخشید زودتر می خواستم نمونه سورس براتون بنویسم ولی فرصت نمی شد
البته باید کاملتر بشه اگه نتونستی برات انجام میدم فعلا ...

h1and1saman
شنبه 01 اسفند 1394, 15:43 عصر
ممنون از همه دوستان
اما مشکل من حل نشد و همچنان مشکل دارم با حرف ی فکر کنم باید بیخیال شم
اگه کسی راه حلی داشت ممنون میشم اگه هم نبود تشکر از همه

علیرضا5
یک شنبه 02 اسفند 1394, 00:01 صبح
دقیقا الان مشکل چیه خوب حرف ی فارسی رو باید به عنوان یک کلید مثلا f5 یا مثلا alt+d تعریف بکنی اون وقت
هروقت ی عربی خواستی d رو فشار می دی و ی عربی تایپ و سرچ میشه
هروقت ی فارسی خواستی کلید جدیدی که تعریف کردی رو فشار میدی ( مثلا f5 یا مثلا alt+d ) ی فارسی تایپ و سرچ میشه
اما اینکه فکر کنی وقتی حرف ی رو انتخاب کردی هم ی فارسی و هم ی عربی دیده بشه این در دات نت هم به شکل معمولی ممکن نیست و نیاز به کدنویسی بیشتری داره
چه برسه به وی بی 6

h1and1saman
یک شنبه 02 اسفند 1394, 00:56 صبح
نه من اصلا نیازی به ی عربی ندارم و فقط حرف ی فارسی رو می خوام.
همونطور که عرض کردم من در سرچ و بقیه مسائل مشکلی ندارم و فقط وقتی خروجی اکسل میگیرم و در اکسل خروجی کلمات ی دار رو سرچ میکنم پیدا نمیکنه چون ی عربی وارد شده .مشکل من وارد شدن ی عربی هست که نمی تونم اصلاح کنم

vbhamed
یک شنبه 02 اسفند 1394, 11:14 صبح
سلام
برای اینکار با استفاده از OLE و زبان VBA می‌تونید فایل اکسل رو ایجاد کنید
از منوی Projects گزینه References رو بزنید و سپس آیتم Microsoft Excel ... Object Library رو انتخاب کنید، به جای ... بستگی به ورژن آفیس عددی قرار میگیره
سپس کدی مشابه این بنویسید، البته این ساختار اصلی کد هستش و شما باید خودتون دیتا رو از بانک بخونید و تو فایل بنویسید، در حقیقت با اینکار انگار یک نفر اکسل رو باز کرده و توش دیتا وارد کرده و سپس فایل رو ذخیره کرده و بسته

Dim x As New Excel.Application

x.Visible = True

x.Workbooks.Add
x.Range("a1:c3") = "ى فارسى"

x.ActiveWorkbook.SaveAs "c:\ss.xlsx"
x.Quit

Set x = Nothing

a1:c3 هم یعنی سلول A1 تا سلول C3
دستور x.visible = true رو هم می‌تونید ننویسید تا خود فرم اکسل ظاهر نشه

h1and1saman
یک شنبه 02 اسفند 1394, 12:43 عصر
این کد اطلاعات داخل دیتابیس رو میریزه تو اکسل اما مشکل اینه که اطلاعاتی داخل دیتابیس ذخیره شده با ی عربی ذخیره شده پس فرقی نمیکنه و مشکل همچنان خواهد بود .
مشکل من وارد کردن اطلاعات با ی فارسی داخل دیتابیسه بقیه مشکلا حله

علیرضا5
یک شنبه 02 اسفند 1394, 17:40 عصر
دوست عزیر البته من با اکسل کار نکردم ولی در اکسس که هم میشه ی فارسی رو هم ذخیره و هم لود کرد
برای نمونه توی همون سورسی که برات نوشتم یه باتون بذار و داخلش بنویس

Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("name") = ChrW(1740)
Adodc1.Recordset.Update



مطمئنا وقتی در اکسس جواب بده در اکسل هم جواب میده

vbhamed
دوشنبه 03 اسفند 1394, 03:46 صبح
این کد اطلاعات داخل دیتابیس رو میریزه تو اکسل اما مشکل اینه که اطلاعاتی داخل دیتابیس ذخیره شده با ی عربی ذخیره شده پس فرقی نمیکنه و مشکل همچنان خواهد بود .
مشکل من وارد کردن اطلاعات با ی فارسی داخل دیتابیسه بقیه مشکلا حله

سلام
خب شما وقتی اطلاعات دیتابیس رو در وی بی خوندی با یک Replace ساده می‌تونی تمام ي های عربی رو به ی فارسی تبدیل کنی بعد تو اکسل بنویسیش دیگه

h1and1saman
دوشنبه 03 اسفند 1394, 15:52 عصر
خب چطوری؟مشکل من هم جایگزین کردنه خب.راه حلش چیه،

vbhamed
سه شنبه 04 اسفند 1394, 03:19 صبح
سلام
گفتم که با یک دستور Replace ساده
s = "اين يک تست است"
s = Replace(s, "ک", "ك")
s = Replace(s, "ى", "ي")

علیرضا5
سه شنبه 04 اسفند 1394, 18:14 عصر
البته کدی که دوست عزیزمون آقا حامد دادن کاملا درسته فقط یه خورده کاملترش کردم


از منوی Projects گزینه References رو بزنید و سپس آیتم Microsoft Excel ... Object Library رو انتخاب کنید

در رویداد FlatEdit1_Change بنویس
یادتون باشه که از تکست باکس codjoke حتما باید استفاده بکنید (تکست باکس وی بی6 این قابلیت رو نداره)

Private Sub FlatEdit1_Change()
FlatEdit1.Text = Replace(FlatEdit1.Text, Chr(237), ChrW(1740))
End Sub



در یک باتون هم بنویس

Private Sub Command1_Click()
Dim x As New Excel.Application
x.Visible = True
x.Workbooks.Add
x.Range("a1:c3") = FlatEdit1.Text
x.ActiveWorkbook.SaveAs "c:\ss.xlsx"
x.Quit
Set x = Nothing
End Sub

h1and1saman
چهارشنبه 05 اسفند 1394, 17:16 عصر
تشکر از همه دوستان بلاخره مشکل حل شد.خیلی دمتون گرم
با این کد
FlatEdit1.Text = Replace(FlatEdit1.Text, Chr(237), ChrW(1740))
بسیار ممنون از همتون