تخفیف های ویژه روز دانشجو! تا ۹۰ درصد تخفیف! تخفیف های ویژه روز دانشجو! تا ۹۰ درصد تخفیف!
مانده تا پایان تخفیف
مشاهده دوره‌ها
0

ایجاد فایل از طریق sql و نوشتن متن فارسی در آن

با سلام خدمت همه اساتید و دوستان محترم

من از طریق sql فایلی در یکی از درایوها ایجاد میکنم و اطلاعات داخل آن می نویسم. اما نکته ای که وجود دارد این است که من فقط می توانم متون انگلیسی را در آن بنویسم. وقتی فارسی وارد میکنم فایل خالی ایجاد میشود. در پروسیجری که نوشتم نوع متغیر متن که به آن ارسال می گردد از نوع nvarchar است و هنگام ارسال اطلاعات کاراکتر N را قبلش می نویسم. باز هم بعد از اجرای پروسیجر و ارسال متن فارسی فایل خالی است.

ممنون میشم اگر راهنمایی بفرمایید.

پرسیده شده در 1396/10/13 توسط

8 پاسخ

0

سلام وقت بخیر.میشه بگید ورودی @file و @Typle که از پروسیجر میاد چی هستن؟؟

پاسخ در 1401/05/11 توسط
0

سلام، کوئری مورد استفادتون رو هم بزارید لطفاً.

پاسخ در 1396/10/13 توسط
1

سلام

وقت بخیر

برای این سوال من راه حل پیدا کردم. باید در کد متد writeToFile تغییر کوچکی داده شود به صورت زیر:

DECLARE @OLE INT
	DECLARE @FileId INT

	EXECUTE sp_OACreate 'Scripting.FileSystemObject',@OLE OUT
	EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileId OUT, @File,@TYPE,1,-1
	EXECUTE sp_OAMethod @FileId, 'WriteLine', Null, @Text
        EXECUTE sp_OAMethod @FileId, 'Close'
	EXECUTE sp_OADestroy @FileId OUT
	EXECUTE sp_OADestroy @OLE OUT

متد sp_OAMethod آرگومان ورودی دیگری دارد که اگر مقدار -1 به آن بدهیم فایل متنی را به صورت یونیکد ایجاد میکند.

با تشکر

پاسخ در 1396/10/18 توسط
0

سلام، بنده هم این مورد و هم راهکار powershell رو چک کردم، اما باز هم کاراکترهای unicode رو ثبت نمیکنه و جایی هم ندیدم راهکاری براش ارائه شده باشه. شاید دوستان دیگه راهکارش رو بدونن.

پاسخ در 1396/10/17 توسط
0

سلام

پروسیجر نوشتن در فایل :

/****** Object:  StoredProcedure [dbo].[WriteToFile]    Script Date: 1/3/2018 3:06:33 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[WriteToFile]
	@File VARCHAR(2000),
	@Text NVARCHAR(2000),
	@TYPE INT
AS
BEGIN
	DECLARE @OLE INT
	DECLARE @FileId INT

	EXECUTE sp_OACreate 'Scripting.FileSystemObject',@OLE OUT
	EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileId OUT, @File,@TYPE,1
	EXECUTE sp_OAMethod @FileId, 'WriteLine', Null, @Text
	EXECUTE sp_OADestroy @FileId
	EXECUTE sp_OADestroy @OLE
END;
-------------------------
اینم کوئری که دارم ایجاد فایل رو فراخوانی میکنم.
begin
DECLARE @Path VARCHAR(2000)
DECLARE @Txt NVARCHAR(2000)
DECLARE @Per_No int
DECLARE @Full_Name NVARCHAR(100) 

SET @Path =  'C:\test.txt'
SET @Per_No = 223344
SET @Full_Name = N'آزاده'

SET @Txt = N'Personal Code:' + CAST(@Per_No as nvarchar(4))
EXEC WriteToFile @Path,@Txt,2
SET @Txt = N'Full Name: N' + @Full_Name
EXEC WriteToFile @Path,@Txt,8
end;
پاسخ در 1396/10/13 توسط
0

کد WriteToFile رو هم بزارید لطفاً.

پاسخ در 1396/10/13 توسط
0

سلام وقت بخیر

راه حلی برای این سوال من وجود نداشت؟

پاسخ در 1396/10/17 توسط

پاسخ شما