نمایش نتایج 1 تا 9 از 9

نام تاپیک: خروجی SP به عنوان یک عدد و ذخیره آن در متغییر

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    همه جای ایران سرای من است
    پست
    863

    Question خروجی SP به عنوان یک عدد و ذخیره آن در متغییر

    با سلام خدمت دوستان
    من میخواهم با ستفاده از قبل از انجام ثبت اطلاعت ببینم که این شخص قبلا" ثبت نام کرده است یا نه؟ به این منظور من از SP استفاده کردم که اگر اطلاعات رو پیدا کرد عدد 1 رو بر میگردونه و اگر اطلاعاتی رو پیدا نکرد عدد صفر رو بر میگردونه. راستش نمی دونم چه جوری این صفر و یک را داخل یک متغییر از نوع Int یا Bolean بریزم؟! در مجموع کدی رو که برای برگدوندن یک عدد از DB بعد از اجرای SP بدونم.
    من از کد زیر در SP استفاده کردم:

    CREATE PROCEDURE ReturnTest
    @Name Nvarchar(50),
    @LastName nvarchar(50)
    AS
    SELECT * From MEM Where (Name=@Name) And( LastName=@LastName)
    Select Case(Select Count(*) From MEM ) When 0 Then 0 Else 1 End
    GO

    و در VB.Net هم از کد زیر:

    Dim r as integer
    r = objcommand.ExecuteNonQuery


    از دستور زیر هم استفاده کردم

    [
    LTR]r = CInt(objcommand.ExecuteScalar)[/LTR]

    در پناه حق موفق باشید.

  2. #2
    کاربر دائمی آواتار asilverisis
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    اهواز
    پست
    262
    سلام

    شما باید اول SP رو توی SQL Analyzer تست بکنی ببین جواب میده یا نه
    من که SP شما رو تست کردم جواب نداد چون دو مجموعه جواب برمی گردونه نه یک مقدار خاص
    دوما چه پیدا بشه چه نشه 1 بر میگردونه

    من فکر میکنم از SP زیر استفاده کنی بهتر باشه

    یه تستی کنی بد نیست


    CREATE PROCEDURE Search (@CusId nchar (5) ) AS

    Declare @Found bit

    IF (Select Count ( * ) From Customers Where CustomerID = @CusId) > 0

    SET @Found =1

    ELSE

    SET @Found=0

    Select @Found as Founded
    GO

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    همه جای ایران سرای من است
    پست
    863
    با سلام خدمت دوست عزیز
    شما درست میگید. نمیدونم چرا اینطور شده شاید دستور رو اشتباه تایپ کردم. ولی SP شما درست کار مینه. ولی مشکل من همچنان به قوت خود باقیست. مشکل اصلی من اینه که میخوام اون 0 یا 1 رو توی یه متغییر ذخیره کنم؟ نه توی یه گرید!

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط M.kavyani
    من میخواهم با ستفاده از قبل از انجام ثبت اطلاعت ببینم که این شخص قبلا" ثبت نام کرده است یا نه؟ به این منظور من از SP استفاده کردم که اگر اطلاعات رو پیدا کرد عدد 1 رو بر میگردونه و اگر اطلاعاتی رو پیدا نکرد عدد صفر رو بر میگردونه.
    برای این کار باید از یک FUNCTION استفاده کنی نه SP. البته استفاده از SP هم غلط نیست ولی بنظر من استفاده از FUNCTION معقول تره.

    در پناه حق موفق باشید و پرتوان

  5. #5
    کاربر دائمی آواتار asilverisis
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    اهواز
    پست
    262
    سلام
    بله آقا حامد درست می گن من هم اول خواستم همین رو بگم ولی وقتی دیدم خودت با SP کار کردی
    گفتم همون روش رو ادامه بدم
    حالا برای اینکه این مقدار رو بخونی
    این SP دقیقا یک Select بر میگردونه یعنی مثل یک جدول تک فیلدی
    حالا اون رو توی یه Datatable لود کن توسط Dataadapter بعد مقدار فیلد 0 رو بخون



    Datatable1.Rows(0)(0)

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    همه جای ایران سرای من است
    پست
    863
    با سلام خدمت آقا حامد و دیگر دوست عزیز
    دوست عزیز از بایت پاسختون ممنون. ولی چون هردو براین تاکید دارید که استفاده از Function بهتره پس
    ممنون میشم در همین مورد اگر یه مثال کوچیک بزنید. البته اگر امکان داره!( استفاده از Function)
    منتظر پاسختون هستم.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    همه جای ایران سرای من است
    پست
    863
    یک اشکال در فرستادن جواب پیش اومد و اینکه نوشته نشده که بحث جدید ارسال شده و من برای رفع این اشکال این متن را نوشتم و سند کردم.
    شرمنده

  8. #8
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    سلام به همگی

    دوست عزیز به نکات زیر دقت کن مشکلت حل میشه .
    1- اولا که همان SP بهترین راه برای این کار است . بهتره به جای پاک کردن صورت مسئله دنبال جواب بگردی .
    2- وقتی می خواهی که روال ذخیره شده (SP) یک مقداری برگردونه باید یک پارامتر خروجی براش تعریف کنی .
    3 - در نهایت اینکه ExecuteNonQuery تعدا سطرهای تحت تاثیر قرار گرفته را بر می گرداند .

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

    [code]
    CREATE PROCEDURE Sample1
    @check int = null output
    AS
    set @check = (select count(*) from customers)
    -- select * from customers
    select @check
    [code/]

    توی برنامه ات هم از ExecuteScalar باید استفاده کنی .

    اگر باز هم مشکلی بود ما در خدمتیم .
    آخرین ویرایش به وسیله habedijoo : سه شنبه 15 آذر 1384 در 09:44 صبح

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    همه جای ایران سرای من است
    پست
    863
    با سلام خدمت دوست عزیز
    ممنون.
    دوست عزیز من نخواستم صورت مساله را پاک کنم فقط اینکه مونده بودم چه جوری اینکار رو انجام و وقتی دو دوست در این تاپیک میگن که استفاده از Function بهتر و معقول تره ادم ترجیح میده که از Function استفاده کنه. در مجموع از بابات پاسخ زیبا و کاملتون ممنون. برم تستش کنم ببینم جواب میده یا نه.
    در پناه حق موفق و کامروا باشید

تاپیک های مشابه

  1. تغییر ارتفاع lineبا تغییر ارتفاع Textbox در گزارش
    نوشته شده توسط payam59 در بخش Access
    پاسخ: 22
    آخرین پست: یک شنبه 03 شهریور 1387, 15:41 عصر
  2. تغییر اندازه ارتفاع QRShape با تغییر ارتفاع DetailBand
    نوشته شده توسط mojtaba_z در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: پنج شنبه 07 تیر 1386, 07:49 صبح
  3. تغییر Toolbar با تغییر Thems ویندوز XP
    نوشته شده توسط na3er-faraji در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 06 مهر 1385, 12:08 عصر
  4. غیر قابل تغییر کردن فرم about تغییر desktop تو vb
    نوشته شده توسط Payman62 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: یک شنبه 31 اردیبهشت 1385, 11:12 صبح
  5. تغییر در PHPbb (تغییرات خیلی کلی)
    نوشته شده توسط nasr در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 05 فروردین 1384, 12:06 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •