PDA

View Full Version : درخواست يه ماژول جهت تبديل كاراكترهاي "ك" و "ي" و ...



Mahsa Hatefi
چهارشنبه 06 مرداد 1389, 11:15 صبح
با سلام

هر از گاهي بايد اطلاعاتي را از يه بانك SQL به اكسل خروجي گرفته و در برنامه خودم دريافت كنم . تا اينجا مشكلي نيست اما با كاراكترهاي عربي "ك" و "ي" و ... مشكل دارم . زيرا در سرچ برنامه و يا سورت آن مشكل پيش مي آيد .

لذا از دوستان تقاضا دارم در صورتي ماژولي در اين مورد دارند و يا علاقه مند به نوشتن آن هستند حقير را از لطف خويش محروم نفرمايند .

mazoolagh
چهارشنبه 06 مرداد 1389, 12:50 عصر
اول اینکه sql 2008 خودش پشتیبانی فارسی رو داره و نیازی نیست

با این وجود میتونین با یک تابع شبیه زیر در همون sql این کار رو انجام بدین (قبل از export به اکسل)


CREATE FUNCTION [ARABIX](@X NVARCHAR(1000))
RETURNS NVARCHAR(1000)
AS
BEGIN
SET @X=replace(@X,nchar(1740),nchar(1610))
SET @X=replace(@X,nchar(1705),nchar(1603))
RETURN (@X)
END
بالطبع برعکسش هم اینجوری میشه


CREATE FUNCTION [PARSIX](@X NVARCHAR(1000))
RETURNS NVARCHAR(1000)
AS
BEGIN
SET @X=replace(@X,nchar(1610),nchar(1740))
SET @X=replace(@X,nchar(1603),nchar(1705))
RETURN (@X)
END

Mahsa Hatefi
دوشنبه 11 مرداد 1389, 10:30 صبح
دوست عزيز

خروجي اختياري نيست و دسترسي به بانك اصلي هم نيست فقط و فقط خروجي به اكسل و من مي خواهم replace بجاي دستي با كد هنگام دريافت در برنامه صورت گيرد

mazoolagh
دوشنبه 11 مرداد 1389, 13:56 عصر
خوب روش همین هست - فقط کد vba شبیه این میشه:



PUBLIC FUNCTION PARSIX(X AS STRING) AS STRING
X=REPLACE(X,CHRW(1610),CHRW(1740))
PARSIX=REPLACE(X,CHRW(1603),CHRW(1705))
END FUNCTION

Mahsa Hatefi
چهارشنبه 13 مرداد 1389, 08:52 صبح
دوست بزرگوار

خوب اين فانكشن رو چه جوري استفاده كنم .

جدول دريافت شده از اكسل رو توي يه ركوردست بريزم و اين فانكشن رو اجرا كنم ؟
آيا براي فيلد به فيلد ركوردست باز شده بايد اين فانكشن اجرا شود ؟
آيا كاراكتر به كاراكتر هر فيلد رو بايد چك كنم ؟
لطفا راهنمايي بفرماييد ممنون خواهم شد

mazoolagh
چهارشنبه 13 مرداد 1389, 14:13 عصر
این تابع روی استرینگ کار میکنه بنابراین محدوده اش فیلد هست
شما اول خروجی به اکسس بگیرین
بعد یک update query بنویسین شبیه این :


UPDATE tbl SET [FLD1]=PARSIX([FLD1]), [FLD2]=PARSIX([FLD2]), ...

و اون رو ذخیره کنین
از حالا به بعد کافی هست بعد از هر IMPORT همین کوئری رو اجرا کنین