رفتن به مطلب
  • 0

مشکل ذخیره مرحله برای اجرای بعدی(کار با دیتا بیس)


vistamobile

سوال

سلام. یه آپ تستی چهار جوابی ساختم الان کارفرما میگه گزینه تست طولانی رو اضافه کن :

 

تو قسمت تست طولانی، کاربر به 220 سوال جواب میده. کارفرما میخواد که اگر کاربر خسته شد و از برنامه اومد بیرون و دوباره برگشت ، از همون سوالی که آپ رو بسته شروع کنه. مثلا از سوال 80 تا 125 یا...

یعنی تست دوباره تکرار نشه بلکه از ادامه دنبال بشه. کل دیتا بیس رو تو یه اکتیویتی پیاده میکنم و یک لی اوت. مشکلم در پیاده سازی مقدارها و دیتا بیس نیس بلکه توو ادامه بازیه. چجوری به بازی بفهمونم که از آخرین تست شروع کن؟ یعنی اکتیویتی بیاد از اون فیلد شروع کنه؟ دوستان لطفا با تیکه کد توضیح بدن. ممنون میشم  :cheshmak:  :gol:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

13 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

ببین، اگه از لیست ویو استفاده میکنی ، یه listView.clear بزن و بعدش دوباره فراخوانی کن
اگرم مولتی پنل میزنی

http://answercenter.ir/topic/9817-اپدیت-دیتابیس-افلایناز-طریق-بانک-انلاین/?p=63385

این پست رو ببین، یادمه یه چی گفته بودم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام مستر مختار

پدر اینده 

cur = sql.exequery("SELECT * FROM tbl WHERE id = " & number)
.
.
.
.
.
 

برای اینکه سوالای جواب داده شده رو هم داشته باشی که فیل رو یک میکنی دیگه

sql.exequery("UPDATE tbl SET ishere = '1' WHERE id = " & id)
 

موفق باشی هموطن

 

شما یه فیلم بذار تو دیتابیس به اسم ishere

هر سوال رو که جواب میده، مقدار رو بکن 1

بعد بگو بیاد بیشترین ای دی رو بگیره و از اونجا شروع کنه

dim number as int
number = sql.singleResult("SELECT max(id) WHERE ishere = 1")

لینک ارسال
به اشتراک گذاری در سایت های دیگر

عاقا پسندیدم!! داداش چشم یه تست میزنم. اسکندی جان باز که عکست افسردس داداش. شکستی چیزی خوردی؟  :gol:  :crazy:

---------------------

: D

لینک ارسال
به اشتراک گذاری در سایت های دیگر

داداش گیج شدم!! این مقدارها رو چچجوری بریزم؟ یعنی بزارم تو کدوم ساب ها؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببین شما وقتی مثلا کلیک میکنی روی تایید که چک شه جواب و ...

بیاو و مقدار فیلد مربوط به اون سوال رو ، 1 بکن

گفتی ای دی و ... سوال رو داری

من فرض میکنم ای دی توی متغیری به اسم Myid هست

ُsql.exenonquery("UPDATE tbl SET ishere = '1' WHERE id = " & myid)

این از این

بعدا که میخوای ادامه بیاری، اول باید ببینی دقیقا تا کدوم ای دی پیش رفته

من میگم بیا همه  ی ای دی هایی رو که فیلد ishere = 1 دارن یعنی پاسخ داده شدن رو انتخاب بکن-> حالا از این ای دی ها،بزرگترین ای دی رو بگیر یعنی اخرین سوال دیگه :)

از اونجایی که بزرگترین ای دی ما ، اخرین سوال جواب داده شده هست، برای سوال بعدیش، این ای دی رو + 1 میکنم

این ای دی رو توی متغیر number میریزم

	Dim number As Int
	number = sql.ExecQuerySingleResult("SELECT max(id) WHERE ishere = '1'")

بعد هم از طریق نامبر، فراخوانی ای دی رو انجام میدم و ....

	number = number + 1
	sql.ExecQuery("SELECT * FROM tbl WHERE id = "& number)

کلا با این کار، شما اخرین سوالت رو به دست میاری، برای سوالای بعد از این سوال، روش اصلی خودت رو دنبال کن

اخرین سوال(مثلا 300) که تموم شد، یه دستور بفرست که تمام ishere هارو صفر کنه

sql.ExecNonQuery("UPDATE tbl SET ishere = '0'")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

یه سوال بپرسم؟ میشه وقتی سوال جواب داده شد، مقدار قبلی حذف بشه از دیتا بیس؟ یعنی من بیام کلا بیخیال id  و اینا بشم . هر سوالی جواب داده شد، اون شاخه حذف بشه. دفعه بعدی خودش میاد از سوال جدید شروع کنه. تو قسمت تستی سوالات 40 تایی و 30 تایی من از id استفاده نکردم. : مثل این بازی فکری قبلیم

 

                                                         Untitled.png

 

هر فیلدی که حل شد ، حذف بشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

داداش من از این کد استفاده کردم و عمل کرد. اسکندری جان کد مال خودته و عالیه :

	Dim int1 As Int
	int1 = sql1.ExecQuerySingleResult("SELECT min(id) from tbl1")
	sql1.ExecNonQuery("DELETE FROM tbl1 WHERE id = " & int1)

من ویرایشش کردم و فقط الان یه مشکل خنده داری دارم!! وقتی برنامه رو میبندم و میام دوباره اجراش کنم،از چهار سوال قبل شروع میشه  :crazy:   هیچ تنظیمات عددی نمیبینم تو کد. جراینش چیه؟؟ :fekr:

پیداش کردم !!!   مشکل اینجاست که دیتا بیس هر دفعه رفرش نمیشه خودم دارم یه کارهایی انجام میدم 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب مختار جان

id رو اضافه کردی؟

حالا یه کار بهتر بکنیم؟

کدهای که من دادم، برای وقتی بود که حالت یه بوکمارک بشه، یعنی بعد از تموم شدن سوالا بخواد استفاده کنه

 

شما اگه میخوای بحذفی کلا

یادمه گفتی تموم اطلاعات اون ردیف از دیتابیس رو داری

حالا بیا بر اساس ستون جواب یا راهنمای یا ستون سوال ، کلا اون فیلد رو حذف کن

برای فراخوانی هم که مثه همیشه

اما دقیق نمیدونم چرا 4 تا ای دی قبلو میاره، شاید چون از min استفاده کردی، وقتی اون ستون رو حذف کردی، استفاده از مین دیگه شاید کاربرد نداشته باشه

:)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

داداش گلم ایراد از کد نیس!! مشکل اینجاس که دیتا بیس رو رفرش نمیکنه!! الان دارم سعی میکنم یه جوری دیتا بیس رو رفرش کنم. نظری نداری؟  :gol:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

از 6 تا لیست ویو همزانه. چون 6 تا  مقدار دارم. البته id  رو همونجوری ریختم!! یعنی 7 تا فیلد داره که شیش تا رو ریختم تو لیست ویو . خودش واسه سوال بعد اینجوریه :

rahnama_list.RemoveAt(0)
ListView1.RemoveAt(0)
ListView2.RemoveAt(0)
ListView3.RemoveAt(0)
ListView4.RemoveAt(0)
javab_list.RemoveAt(0)

یعنی اول listView.clear عوض کنم و بعدش دوباره بالایی ها رو بنویسم ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

نگرفتم چی شد دقیقا

ببین، میگی رفرش نمیشه کارت

برای رفرش شدن باید یه بار لیست ویو رو پاک کنی(همونی که توش رفرش نمیشه) و دوباره لودش کنی

اینکار بی شک باید جواب بده اگر مشکل از لود دوباره باشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

	RemoveView
	Activity.LoadLayout ("h1")

اگر بشه با هر بار فشردن باتون تایید اکتیوتی رو ریسیت زد حله 

 

 

حل شد!! بجای این همه اذیت کردن کدها،از روش تنبلها استفاده کردم!! بجای یک اکتیوتی از دو اکتیوتی استفاده کردم!! اینجوری :

StartActivity(test)
Activity.Finish

' به اولی گفتم برو تو دومی و به دومی هم گفتم بیا اولی 

StartActivity(test2)
Activity.Finish
لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی هم خوب

برای اجرای دو باره اکتیویتی هم به شکل زیر کار کن

activity_create(true)

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...