PDA

View Full Version : سوال: راهنمایی در مورد نحوه تفکیک داده و ذخیره آن در SQL Server



spacket
شنبه 15 اسفند 1394, 11:53 صبح
با سلام و خسته نباشید
من میخوام یه همچین برنامه ایی بنویسم ولی متاسفانه هم خیلی گشتم چیزی پیدا نکردم و هم همه اش به مشکل برخورد میکنم
داده ایی از سمت کلاینت ارسال میشه و داخل یک تکس باکس تمام اون داده نمایش داده میشه
حال من میخوام که این داده به طور مستقیم داخل اس کیو ال ذخیره بشه و نوع ذخیره اون به این گونه باشه
مثال :
داده های وارد شده در تکس باکس
E!-659989565-9322659-568-8982-8655
R@-48454654G8-985298-2487656-456112328
حال میخوام که اگر داده ابتداش با !E شروع شده بره داخل تیبل A در اس کیو ال ذخیره کنه
اگر داده ابتداش با @R شروع شده بره داخل تیبل B در اس کیو ال ذخیره کنه
همچنین امکان این رو داشته باشه که هر قسمتی از این متن در ستون خودش قرار بگیرد
یعنی اگر داده در جدول Aذخیره می شود عدد659989565 در ستون یک ، عدد 9322659 در ستون دو ،عدد568 در ستون سه،عدد8982 در ستون چهار و عدد8655در ستون پنجم قرار بگیرد


در ضمن برام اصلا مهم نیست چه زبان برنامه نویسی میخواد باشه فقط بتونم این کار تفکیک رو انجام بدم برام کافیه

خیلی ممنون میشم اگر بتونید منو راهنمایی کنید
با تشکر

rezashaban
شنبه 15 اسفند 1394, 12:24 عصر
سلام دوست من
اول بگو با چه زبانی میخوای بنویسی تا بهتر بشه راهنمایی کرد
وگرنه این برنامه رو میشه با خود اسکیوال هم نوشت و فقط فرم ورود اطلاعاتش رو با هرچی خواستی طراحی کنی
با اسکبوال:
خرجش یه sp هستش که یه پارامتر ورودی داره که اون داده هست و مابقی مسیر رو با اسکیوال میری

spacket
شنبه 15 اسفند 1394, 13:19 عصر
سلام دوست من
اول بگو با چه زبانی میخوای بنویسی تا بهتر بشه راهنمایی کرد
وگرنه این برنامه رو میشه با خود اسکیوال هم نوشت و فقط فرم ورود اطلاعاتش رو با هرچی خواستی طراحی کنی
با اسکبوال:
خرجش یه sp هستش که یه پارامتر ورودی داره که اون داده هست و مابقی مسیر رو با اسکیوال میری

من میخوام این برنامه رو با c# بنویسم ممنون میشم اگر کمک کنید کجا و چطوری باید از این sp استفاده کرد

rezashaban
شنبه 15 اسفند 1394, 13:35 عصر
sp = Stored Procedure
این sp رو باید داخل اسکیوال بنویسی و مقادیر وارد شده داخل فرم رو به اون ازسال کنی
اگه اسکیوال کار کرده باشی واست کاری نداره(سخت نیست)

khokhan
شنبه 15 اسفند 1394, 14:08 عصر
من میخوام این برنامه رو با C#‎‎‎ بنویسم ممنون میشم اگر کمک کنید کجا و چطوری باید از این sp استفاده کرد
قبل از هر چیز بایستی یه مکانیزم ایجاد کنی و رشته دریافتی رو به چند قسمت تقسیم کنی (split)
وبعد از اینکه رشته دیافتی به قسمتهای مجزا تقسیم و درون متغیر ها ریخته شد ،
شرط رو براساس قسمتی که اندیسش < صفر > هست قرار بدی و چک کنی وبعد از اینکه شرط محقق شد
هر کدوم از قسمتها رو در جدول مربوطه بریزی

rezashaban
شنبه 15 اسفند 1394, 14:15 عصر
قبل از هر چیز بایستی یه مکانیزم ایجاد کنی و رشته دریافتی رو به چند قسمت تقسیم کنی (split)
وبعد از اینکه رشته دیافتی به قسمتهای مجزا تقسیم و درون متغیر ها ریخته شد ،
شرط رو براساس قسمتی که اندیسش < صفر > هست قرار بدی و چک کنی وبعد از اینکه شرط محقق شد
هر کدوم از قسمتها رو در جدول مربوطه بریزی
این روش که شما گفتی درسته میشه انجام داد ولی اگه تغییری لازم داشت داخل برنامه بده(یه قسمت به رشته اضافه بشه یا کم بشه و یا بخواد یه جدول جدید اضافه کنه) حتما باید سورس برنامه رو تغییر بده و دوباره نسخه به مشتری بده ولی اگه این تغییرات احتمالی رو ببره سمت دیتابیس دیگه نیاز به نسخه جدید برای نرم افزارش برای اینجور تغییرات نداره

khokhan
شنبه 15 اسفند 1394, 14:37 عصر
این روش که شما گفتی درسته میشه انجام داد ولی اگه تغییری لازم داشت داخل برنامه بده(یه قسمت به رشته اضافه بشه یا کم بشه و یا بخواد یه جدول جدید اضافه کنه) حتما باید سورس برنامه رو تغییر بده و دوباره نسخه به مشتری بده ولی اگه این تغییرات احتمالی رو ببره سمت دیتابیس دیگه نیاز به نسخه جدید برای نرم افزارش برای اینجور تغییرات نداره
هیچ معلومه چی داری می گی ؟؟؟؟؟؟؟؟؟؟؟!!! بایستی یه چیزی داشته باش تا به پروسچر پاس بدی ؟؟؟؟ یانه همینطور الابختکیه؟
حالا همینو انجام بده :لبخند: تا بعد :

rezashaban
شنبه 15 اسفند 1394, 14:46 عصر
من برنامه برای کسی انجام نمیدم ولی تا جایی که بتونم راهنمایی میکنم
خواهی پند بگیر خواهی ملال:لبخند:

khokhan
شنبه 15 اسفند 1394, 15:13 عصر
من برنامه برای کسی انجام نمیدم ولی تا جایی که بتونم راهنمایی میکنم
خواهی پند بگیر خواهی ملال:لبخند:
دوست عزیز صحبت ملال نیست
شاید توی این تالار خیلی از عزیزان منظور شما رو فورا دریافت کنند
ولی از صحبتهای ایجاد کننده تاپیک معلومه که زیاد با این چیزا آشنایی نداره :لبخند:
شاید منظور شما این باشه که درسمت بانک یه فانکشن ایجاد بکنه و کل رشته رو به اون فانکشن ارسال کنه و عمل تفکیک رو انجام بده .... یه چیزی شبیه این :


CREATE FUNCTION SplitString
(
@Input NVARCHAR(MAX),
@Character CHAR(1)
)
RETURNS @Output TABLE (
Item NVARCHAR(1000)
)
AS
BEGIN
DECLARE @StartIndex INT, @EndIndex INT

SET @StartIndex = 1
IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
BEGIN
SET @Input = @Input + @Character
END

WHILE CHARINDEX(@Character, @Input) > 0
BEGIN
SET @EndIndex = CHARINDEX(@Character, @Input)

INSERT INTO @Output(Item)
SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)

SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
END

RETURN
END
GO

rezashaban
یک شنبه 16 اسفند 1394, 01:40 صبح
دوست عزیز صحبت ملال نیست
شاید توی این تالار خیلی از عزیزان منظور شما رو فورا دریافت کنند
ولی از صحبتهای ایجاد کننده تاپیک معلومه که زیاد با این چیزا آشنایی نداره :لبخند:
شاید منظور شما این باشه که درسمت بانک یه فانکشن ایجاد بکنه و کل رشته رو به اون فانکشن ارسال کنه و عمل تفکیک رو انجام بده .... یه چیزی شبیه این :


CREATE FUNCTION SplitString
(
@Input NVARCHAR(MAX),
@Character CHAR(1)
)
RETURNS @Output TABLE (
Item NVARCHAR(1000)
)
AS
BEGIN
DECLARE @StartIndex INT, @EndIndex INT

SET @StartIndex = 1
IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
BEGIN
SET @Input = @Input + @Character
END

WHILE CHARINDEX(@Character, @Input) > 0
BEGIN
SET @EndIndex = CHARINDEX(@Character, @Input)

INSERT INTO @Output(Item)
SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)

SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
END

RETURN
END
GO

سلام دوست من
نیازی به فانگشن نیست با همون sp هم میتونه کار تفکیک رشته رو انجام بده
منظورم اینه که در فرمی که طراحی مبکنه فقط رشته رو دریافت و به دیتابیس ارسال کنه و عملیات تفکیک و ثبت در جداول رو سمت اسکیوال انجام بده به این ترتیب اگر در آینده خواست جدول اضافه کنه یا طول رشته تغییر کرد و یا هرچیز دیگه ای...بدون تغییر Application میتونه کد اسکبوال رو تغییر بده و هم در زمان صرفه جویی کرده و هم کارش راحتتر میشه