PDA

View Full Version : جابجایی فیلد



باران امید
سه شنبه 31 اردیبهشت 1387, 21:20 عصر
سلام .من این سوال را در تالار پایگاه داده بخش sql پرسیدم ؛به نتیجه رسیدیم که اینجا دوباره بپرسم. البته داشت درست می شد که دوباره خوردم به مشکل .:لبخند:

من یک برنامه دارم می نویسم در vb.net2005 که در یک قسمت از یک فایل یکسری اطلاعات دریافت و در یک ستون از جدول sql می ریزم .

مثلا فرض کنید که یک سری اسم را دریافت و در یک ستون از جدول sql ذخیره کردم بعد نام خانوادگی که با یکسری تغییرات همراه شده در یک آرایه ریخته شده حالا من می خواهم این نام های خانوادگی را درستون دیگر جدولم وارد کنم که نمی شود .:ناراحت:

از دستور update نتونستم استفاده کنم چون داده هام اولا در یک ارایه هست ثانیا من نمی تونم جلوی شرط where یک فیلد خاص اسم را بنویسم .می خوام مثل Insert to که داده ها را پشت سرهم وارد می کند این هم فیلد رکوردها را به ترتیب پایین بیاید و درج کند.
حالا من نمی دونم چی کار کنم ؟:گریه: راه یا دستوری مختص vb یا همین دستور های sqlهست که کمکم کند ؟
کلا باید چه کار کنم ؟چون من به این ذخیره در sql و داشتن هردو ستون برای خروجی احتیاج دارم.:افسرده:

ali_md110
سه شنبه 31 اردیبهشت 1387, 21:41 عصر
دوست عزیز شما اطلاعات ورودی مثل نام و نام خانوادگی رو میخواهید از طریق چه کنترلی مثلا یک دیتاگراید ویو وارد کنید یا کنترل دیگری ؟

باران امید
سه شنبه 31 اردیبهشت 1387, 22:51 عصر
سلام مرسی جواب دادید .:لبخند:
من نام را از یک فایل که کاربر وارد می کند . دریافت می کنم .

این فایل را که الان یک فایل متنی ساده است (البته باید از فایل word , Excel را هم بتواند بخواند که هنوز نتونستم بنویسم) به صورت ترتیبی خوانده می شود و هر خط که یک اسم باشد خوانده و در یک فیلد ستون اول جدول ریخته و همین طور خوانده و درج می شود تا به انتهای فایل برسد .(توجه دارید که وقتی هر اسم وارد می شود فیلد مقابل که نام خانوادگی است خالی می ماند.)
بعد به همین تعداد طی یک سری تغییرات مثلا نام خانوادگی در یک آرایه ریخته می شود و حالا باید فیلد های نام خانوادگی پر شود (و البته این روند ادامه دارد ).

اینکه گفتید از دیتا گرید یا دیگر کنترل ها نیاز دارد که یکی یکی وارد شود ولی در صورت برنامه من فقط یک ورودی فایل دریافت و یک خروجی فایل دارم .:لبخند:

Sub Zero
چهارشنبه 01 خرداد 1387, 09:13 صبح
این فایل را که الان یک فایل متنی ساده است (البته باید از فایل word , Excel را هم بتواند بخواند که هنوز نتونستم بنویسم) به صورت ترتیبی خوانده می شود و هر خط که یک اسم باشد خوانده و در یک فیلد ستون اول جدول ریخته و همین طور خوانده و درج می شود تا به انتهای فایل برسد
دوست عزیز اگه مبدا داده های شما فایل متنی است واز کاراکترهای خاصی (مثل ;) برای جدا کردن فیلدها استفاده کردید بهترین گزینه استفاده از BulkInsert است .در مورد این عبارت در سایت جستجو کنید موارد زیادی رو پیدا میکنید .

باران امید
چهارشنبه 01 خرداد 1387, 16:17 عصر
سلام .مرسی جواب دادید:لبخندساده:
ولی مشکل من در حال حاضر این نیست(می گم حالا چون هر وقت از یه مشکل حل می شه دوباره به یه دردسر جدید می خورم:عصبانی++::لبخند:)
کاربر موظف است که هر اسم را در یک خط وارد کرده باشد وخدا رو شکر تا حالا برای وارد کردن در جدول مشکل پیدا نکردم.
در فایل و در هر خط فقط یک فیلد وجود دارد مثلا یک لیست که فقط از اسم کوچک در هر خط تشکیل شده ؛ ولی مشکل این است که وقتی در جدول می خوام که نام خانوادگی را وارد کنم هر نام خانوادگی مقابل هر اسم قرار نمی گیرد ( هر کاری کردم نشد).

از اینکه یک دستور جدید به من یاد دادید خیلی ممونم :لبخندساده:مطمئنم لازمم دارمش ولی الان نمی تونم فکرمو جمع کنم:گیج:البته اگر منظور شما رو نفهمیدم دوباره منت بگذارید بگید باور کنید تازه کارم:لبخند:

دو تا مشکل وجود دارد :
1-نام خانوادگی در ارایه است .
2- من اصلا نمی دونم محتوای فیلد اسم کوچک چیست که در شرط از ان استفاده کنم .
3- را ه های حل مسئله را من بلد نیستم.:گریه::لبخند:.

باران امید
پنج شنبه 02 خرداد 1387, 14:20 عصر
خب من همین جا اعلام می کنم که رویمان کم شد و از خیر این شکل وارد کردن اطلاعات گذشتیم چون مثل اینکه هیچ دستوری برایش وجود ندارد.(فکر نکنید فقط همین سایت این سوال را پرسیدم نه از هر کسی پرسیدم تا همین لحظه هیچ راهی نداشته بهتره بگم اصولا امکان ندارد):قهقهه::گریه:

(با اجازه مدیران سایت اگر خلاف قانون نیست همین جا این مسئله را اعلام کنم(اگر خلاف است خواهش می کنم پاکش نکنید دوباره می پرسم)):لبخندساده:

پس من به این نتیجه رسیدم که شکل برنامم را عوض کنم و هر دو تا فیلد رابا هم به شکل ارایه با دستور Insert to وارد کنم .:اشتباه:

ببینید اگر شما یک فایل داشتید که می خواستید در ارایه بریزید و تعداد اسم داخلش برابر تعداد سطرش است (قبلا توضیح دادم ) چی کار می کردید؟
(کاربر نباید تعداد را وارد کند این صورت مسئله است)

بهترین و بدترین راهی که به نظرم رسید این است که یه بار فایل را از اول تا اخر بخونم تا تعداد سطر هایش رابشمارد که مشخص شود ارایه چند تایی می شود دوباره بیایم بخونم و داخل ارایه بنویسم .:متفکر:

(من هیچ تصوری از اینکه این فایل حدودا چند تایی است ندارم.):ناراحت::متعجب:

و البته یک راه دیگر هم به ذهنم رسید پرت.که بیام در یک جدول دیگه پسورد ها را وارد کنم بعد هر دو را باهم یکی کنم (این خیلی بدتر بود نه!):شیطان:
حالا نظر بدهید.

linux
پنج شنبه 02 خرداد 1387, 15:02 عصر
من که اصلا سر در نیاوردم می خواهی چکاری کنی! صورت مساله را بگو شاید راه حل بهتر از اینیکه شما انجام می دهید هم داشته باشد.

باران امید
پنج شنبه 02 خرداد 1387, 19:09 عصر
سلام مرسی توجه کردید. :لبخندساده::لبخند:
ببینید صورت مسئله این است :
1- یک فایل ورودی دریافت می شود.(مثلا یک لیست حاوی اسم کوچک )
2-به تعداد ورودی، خروجی تولید می شود .(مثلا یک لیست نام خانوادگی)
3-اطلاعات هر دو در sql ذخیره می شود.
4-خروجی از طریق یک فایل حاوی هر دو لیست تولید می شود.

*همه ورودی و خروجی ها رشته هستند.
*امکان بالا بودن تعداد رکوردهای ورودی زیاد است.
*حالا فایل ورودی و خروجی می تواند ( txt یا xls یا doc ) باشد.(من تاحالا فقط برای txt نوشتم هنوز با اونا در گیرم):افسرده:
*تازه لوگین هم داره .(نه اینکه تازه کارم جو گیرم هنوزم کامل نشده .):کف:
*و دردسر های دیگر...

ولی خیلی جاهاشو نوشتم .:لبخندساده:

اگر بد نوشتم از بی سوادیمه بگید دوباره می نویسم.:خجالت:

linux
جمعه 03 خرداد 1387, 00:40 صبح
سلام مرسی توجه کردید. :لبخندساده::لبخند:
ببینید صورت مسئله این است :
1- یک فایل ورودی دریافت می شود.(مثلا یک لیست حاوی اسم کوچک )
2-به تعداد ورودی، خروجی تولید می شود .(مثلا یک لیست نام خانوادگی)
3-اطلاعات هر دو در sql ذخیره می شود.
4-خروجی از طریق یک فایل حاوی هر دو لیست تولید می شود.

*همه ورودی و خروجی ها رشته هستند.
*امکان بالا بودن تعداد رکوردهای ورودی زیاد است.
*حالا فایل ورودی و خروجی می تواند ( txt یا xls یا doc ) باشد.(من تاحالا فقط برای txt نوشتم هنوز با اونا در گیرم):افسرده:
*تازه لوگین هم داره .(نه اینکه تازه کارم جو گیرم هنوزم کامل نشده .):کف:
*و دردسر های دیگر...

ولی خیلی جاهاشو نوشتم .:لبخندساده:

اگر بد نوشتم از بی سوادیمه بگید دوباره می نویسم.:خجالت:
مثلا یک فایل که شامل اسمهای
اسم1
اسم2
اسم3 و...
به تعداد ورودی خروجی تولید می شود! چگونه؟ خروجی با ورودی چه رابطه ای داره؟
این لیست نام خانوادگی را از کجا می آری؟

kablayi
جمعه 03 خرداد 1387, 00:56 صبح
حالا این برنامه به چه دردی میخوره ؟ :متفکر:

سلام ...
نمیدونم میخوای چیکار کنی... :متفکر:
ولی یه راه به ذهنم میرسه اونم اینکه ابتدا همه اسمها رو بخونی و دونه دونه تو یه کنترل مثل combobox بریزی بعد برای نام خانوادگی هم همینکار رو انجام بده ...
حالا دوتا کمبوباکس داری که پر از نام و نام خانوادگی است ... البته visible اینها رو تو false کن تا تو اجرا دیده نشه...
خوب حالا دیگه کار راحته ...
با توجه به index مقادیر تو کمبوباکس میتونی اونارو تو جدول متناظر هم ذخیره کنی ...

نمیدونم این راحه حل به دردت میخوره یا نه ... چون هنوز نفهمیدم که میخوای چیکار کنی ؟ :متفکر:

باران امید
جمعه 03 خرداد 1387, 10:12 صبح
سلام مرسی مرسی که جواب دادید:لبخند::لبخند::لبخند:
kablayi واقعا واقعا راه حلی که دادی با حال بود .الان در همین لحظه تونستم هر دو تا رو باهم وارد کنم. :قهقهه::قهقهه::قهقهه::قهقهه:
این قدر الان تو فضام که نمی دونم چی شد و فقط الان می گم که باهم روبروی هم عین یه جدول درستو حسابی دیدمش واقعا الان این قدر خوشحالم که نمی دونم چی بگم .

خیلی فکرت خفن بود .
با ListBox نوشتم آخه از اولشم تو ListBox می ریختم تا ببینم که چی کار می کنم.نمی دونستم این جوری هم میشه باهاش کار کرد .
کتاب که الان ندارم از وقتی پستت رو خوندم دنبال کار با combobox گشتم بعد که دیدم عین همه با همون ListBox .
الان این قدر کدها روجابجا کردم که نمی دونم چی شد فقط می گم جواب میده و من از دست کلی کار تکراری راحت شدم.:لبخند::لبخند::لبخند:
فقط خدا کنه دوباره خراب نشه.
حواسم که جمع شد درستو حسابی می نویسم.

باران امید
جمعه 03 خرداد 1387, 19:34 عصر
سلام .:لبخندساده:
من لازمه که اینجا از همه عزیزانی که هم اینجا هم تالار sql به من کمک کردند راهنمایی کردند و جواب پست های من رو دادند ، تا این مسئله حل بشه قدردانی کنم .واقعا زحمت کشیدید وقت گذاشتید و به یک مبتدی توجه کردید .بی نهایت ممنونم.

فایل را خواندم و یکی یکی در ListBox ریختم(این کار رو قبلا هم کرده بودم و برای نمایش به کاربر هم لازم می شود) بعد count گرفتم تعداد مشخص شد .خروجی هم که در ارایه قرار می گرفت .
هر دو را با هم با Insert to وارد جدول کردم و این قسمتش تمام شد.

linux ترغیب شما برای راحل جدید و مطرح کردن صورت سوال یه دنیا برام ارزش داشت.:لبخند::لبخندساده::تشوی ق:

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

kablayi دوباره می گم خیلی عالی بود .:کف::کف::کف:

و البته فکر می کنم یه توضیحی راجع به برنامه :
این برنامه پروژه پایانی من هست و البته نمره یه درس دو واحدی دیگم مستقیما به این برنامه بستگی دارد. و البته خود برنامه فقط به درد استادم می خوره (و برنامه رو هم کامل می خواد) و به چند نفر که گفتم چی هست سرزنشم کردن و چون من دوست ندارم اینجا که همه حرفه ای هستند سرزنش بشم نمی گم .
والبته اولین برنامه با vb.net و اشنایی با این زبان.

و یک تجربه ای که پیدا کردم قبل از نوشتن برنامه حتما در مورد شکل نوشتن و دستورهای ممکن مشورت کنم.

و یک خبر دیگه یه مشکل جدید.:چشمک:

linux
جمعه 03 خرداد 1387, 20:25 عصر
چیزی به اسم سرزنش اینجا وجود نداره، اگر هم یک وقتی چیزی گفته میشه برای روشن شدن مساله هست.

kablayi
شنبه 04 خرداد 1387, 01:06 صبح
منم با linux جان موافقم ... اینجا کسی تو رو سرزنش نمیکنه ...
در ضمن وظیفه بود ... قابلی نداشت ... :لبخند: