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

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


masoudshm

سوال

سلام خدمت اساتید گرامی.

من یک سورس کتاب اندروید دارم که با بیسیک 4 اندروید نوشته شده.

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

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

 

1 - برای وارد کردن نام یک فصل حتما باید بعد از نام ، یک عدد هم قرار بدم.

مثلا نمیشه بگذارم مقدمه. باید بنویسم مقدمه 1 یا هر عدد دیگری.

1.jpg

اگر نام رو بدون عدد قرار بدهم. مثلا بگذارم مقدمه پس از اجرای برنامه با لمس بر روی آن ، برنامه ارور زیر را میدهد.

2.jpg

 

چطور میتونم کاری کنم تا در قسمت فصل هر نامی رو به هر شکلی که دلخواهم بود وارد کنم؟ چه با عدد و چه بدون عدد. و حتی اینکه در وارد کردن نام فصل واژه ای رو وارد کنم که ترکیب دو کلمه فارسی و انگلیسی باشد. مثل : گوشی Android

 

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

 

2 - در قسمت بخش ها میشود هر نامی قرار داد . چه با عدد و چه بدون عدد.

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

مثلا اگر بخواهیم در قسمت فصل بگذاریم مقدمه 1

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

حتما باید وارد کنیم : هدف برنامه مقدمه 1

3.jpg

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

یعنی وارد کنم فقط : هدف برنامه

بدون نیاز به اینکه بعدش نام فصل رو بنویسیم.

به این شکل :

4.jpg

 

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

 

3 - مشکل سوم اینکه نمی شود یک نام رو در یک فیلد هم برای فصل ها قرار داد هم برای بخش ها.

مثلا اگر در فصل ها قرار بدهم مقدمه 1

در بخش ها هم قرار بدهم مقدمه 1

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

یعنی مقدمه 1 مقدمه 1

به این شکل در میاد :

5.jpg

در این حالت که نام فصل و بخش تکراری باشد میشوند ، در برنامه جایی که نام بخش رو نشان میدهد خالیست و حتی کلمه مقدمه 1 هم نمایش نمی دهد

با زدن روی این گزینه که نامی هم ندارد ارور زیر را می دهد.

6.jpg

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

 

منتظر پاسخ های اساتید محترم و گرامی هستم. با تشکر  :doa:  :gol:

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

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

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

دوست عزیز همه این آتیشا زیر سر این کلمه است DISTINCT :DD: 

وقتی توی یک کوئری از این کلمه استفاده کنید دیگه نمیتونید رکوردهای تکراری رو لود کنید و هر چی آیتم تکراری باشه فقط یه دونشونو برمیگردونه این رو پاک کنید و تو تیبل fasl دیگه عنوانهات عدد نزار مثلا مقدمه 1 رو مقدمه خالی بنویس

 

ولی در کل پروژتون رو غیر اصولی نوشتید کاملا مشخصه میتونست حجم کدنویسیتون نصف بشه  چه خبره این همه اکتیویتی من ده تا اکتیویتی میبینم تو این سورس تازه اگه بیشتر نباشه

واسه یه کتاب دیگه بترکونه سه تا چارتا اکتیویتی کافیشه

آقا من این کلمه DISTINCT رو پاک کردم.

در دیتابیس اینجوری قرار دادم :

Untitled.png

 

این مشکل که بعد از مقدمه باید عدد میذاشتیم حل شد. ولی یه مشکل دیگه اضافه شد. 

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

اگر 5 بار هم بنویسم مقدمه 5 تا گزینه مقدمه در صفحه فصل ها نمایش میده.

 

در عکس بالا در id 1 نوشتم مقدمه و در title نوشتم هدف برنامه. بعد از هدف برنامه کلمه مقدمه رو ننوشتم.

در id 2 بعد از راهنما نوشتم مقدمه. در id 2 برنامه بدون هیچ مشکلی در صفحه فصل وارد مقدمه میشه در صفحه بخش وارد راهنما میشه و بعد هم مطلب رو نمایش میده. 

اما در id 1 در صفحه فصل نوشته مقدمه که با زدن روش وارد صفحه بخش میشیم با اینکه من در title نوشتم هدف برنامه نوشته شده راهنما ، و گزینه ای به اسم هدف برنامه وجود نداره اصلا. و با زدن بر روی گزینه راهنما وارد مطلب میشه و مطلب رو نمایش میده.

 

اگر هم در برنامه به این شکل قرار بدهم:

Untitled2.png

در صفحه فصل ها دو گزینه مقدمه وجود داره که داخل هر کدوم دو مورد «هدف برنامه و راهنما» هستند.

 

و اینکه اون مشکل سوم هم که در تاپیک گفته بودم به همون شکل هست. یعنی اگر در فصل بگذاریم مقدمه و در title بگذاریم مقدمه مقدمه به همون شکل نام غیب میشه و نمایش داده نمیشه و با زدن روش هم ارور میدهد.

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

شما هیچ محدودیتی تو متنی که توی دیتابیس میگذارید ندارید قطعا فراخوانی هاتون اشتباهه مثلا تو سوال 1 ارور ربطی به متن نداشته بلکه به خاطر ایندکسه یعنی مثلا اومدین یه آیتم رو خواستین که توی دیتابیس نبوده یا یه کوئری که سایزش یک بوده 2 ازش خواستین

کدهایی که واسه فراخوانی استفاده میکنید رو بزاریدلطفا

 

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

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

 

سلام خدمت اساتید گرامی.
من یک سورس کتاب اندروید دارم که با بیسیک 4 اندروید نوشته شده.
فایل دیتابیس از قسمت فصل ها ، بخش ها و مطلب تشکیل شده.
اما چند مشکل در ساختار دیتابیس این برنامه وجود دارد.
 
1 - برای وارد کردن نام یک فصل حتما باید بعد از نام ، یک عدد هم قرار بدم.
مثلا نمیشه بگذارم مقدمه. باید بنویسم مقدمه 1 یا هر عدد دیگری.
1.jpg
اگر نام رو بدون عدد قرار بدهم. مثلا بگذارم مقدمه پس از اجرای برنامه با لمس بر روی آن ، برنامه ارور زیر را میدهد.
2.jpg
 
چطور میتونم کاری کنم تا در قسمت فصل هر نامی رو به هر شکلی که دلخواهم بود وارد کنم؟ چه با عدد و چه بدون عدد. و حتی اینکه در وارد کردن نام فصل واژه ای رو وارد کنم که ترکیب دو کلمه فارسی و انگلیسی باشد. مثل : گوشی Android
 
-----------------------------------------------------------------------------------------------------
 
2 - در قسمت بخش ها میشود هر نامی قرار داد . چه با عدد و چه بدون عدد.
اما مشکلی که در قسمت نام بخش وجود دارد این است که حتما باید بعد از وارد کردن نام برای بخش حتما نامی رو هم که برای فصل ها قرار داده بودم رو بنویسم. وگرنه در برنامه ارور می دهد.
مثلا اگر بخواهیم در قسمت فصل بگذاریم مقدمه 1
بعد بخواهیم برای قسمت بخش نامی قرار دهیم. مثلا هدف برنامه
حتما باید وارد کنیم : هدف برنامه مقدمه 1
3.jpg
چطور میتونم کاری کنم تا بدون نیاز به وارد کردن نام فصل ، از قسمت بخش ارور نگیرد.
یعنی وارد کنم فقط : هدف برنامه
بدون نیاز به اینکه بعدش نام فصل رو بنویسیم.
به این شکل :
4.jpg
 
-----------------------------------------------------------------------------------------------------
 
3 - مشکل سوم اینکه نمی شود یک نام رو در یک فیلد هم برای فصل ها قرار داد هم برای بخش ها.
مثلا اگر در فصل ها قرار بدهم مقدمه 1
در بخش ها هم قرار بدهم مقدمه 1
که در اینجا چون همونطور که در مورد 2 اشاره کردم باید نام فصل رو هم بعد از نام بخش بنویسم
یعنی مقدمه 1 مقدمه 1
به این شکل در میاد :
5.jpg
در این حالت که نام فصل و بخش تکراری باشد میشوند ، در برنامه جایی که نام بخش رو نشان میدهد خالیست و حتی کلمه مقدمه 1 هم نمایش نمی دهد
با زدن روی این گزینه که نامی هم ندارد ارور زیر را می دهد.
6.jpg
چطور میتونم این مشکل رو هم برطرف کنم تا بتونم از یک نام تکراری در هر دو قسمت فصل ها و بخش ها استفاده کنم؟
 
منتظر پاسخ های اساتید محترم و گرامی هستم. با تشکر  :doa:  :gol:

 

 

احتمالا کسی که برنامه رو نوشته و شما از سورسش استفاده می کنی، دقیقا به همین شکل که شما توضیح دادی، برنامه نویسی کرده تا بتونه ازش برای مشخص کردن جایگاه عناوین هر فصل و اینکه کدوم فصل داخل کدوم بخش هست استفاده کنه. اگه خودتون شروع به نوشتن یک برنامه کتابخانه همراه دیتابیس آفلاین بکنید، متوجه می شید که تنها مشکلی که پیش میاد همین Handle کردن همینه که کدوم بخش به کدوم فصل ارتباط داره و ...

 

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

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

شما هیچ محدودیتی تو متنی که توی دیتابیس میگذارید ندارید قطعا فراخوانی هاتون اشتباهه مثلا تو سوال 1 ارور ربطی به متن نداشته بلکه به خاطر ایندکسه یعنی مثلا اومدین یه آیتم رو خواستین که توی دیتابیس نبوده یا یه کوئری که سایزش یک بوده 2 ازش خواستین

کدهایی که واسه فراخوانی استفاده میکنید رو بزاریدلطفا

 

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

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

من توی سورس سرچ کردم و هر کجا که عبارت ExecQuery  رو دیدم براتون قرار میدم.

 

1.png

 

 

 

2.png

 

3.png

 

4.png

5.png

6.png

 

7.png

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

خط 216 توی عکس اول به نظر من کوئری اشتباه هست  :fekr:  تا به حال همچین نوع کوئری رو ندیده بودم

اگر DISTINCT و FASL هر دو یک ستون از دیتابیس هستند باید با کاما از هم دیگه جداشون کنید  :fekr:

بعد توی مثلا عکس آخری در خط 158 اومدید گفتید FROM str_fasl

اگر واقعا یک fasl رو یک ستون باشه که خب 100% کدتون اشتباه هست

همیشه بعد از FROM باید اسم جدول رو قرار بدید و به نظر من به هیچ وجه نیازی ندارید که اسم جدول رو به صورت string وارد کنید

در نتیجه احتمال بر این است که این کد هم اشتباه باشه کلا  :fekr:  :pardon:  همچنین توی بقیه کدهاتون هم همچین خطاهایی وجود داره حدودا ....

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

آقای ایزدی؟ آقای شاهپیری؟

لطفا راهنماییم کنید.

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

منتظر پاسخ اساتید هستم.

با تشکر

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

سلام خدمت مدیر محترم کل سایت جناب آقای ایزدی.

خیلی خیلی ممنون از پاسختون.

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

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

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

میشه یه راهنمایی کنین که دقیقا چه چیزی باعث میشه تا در وارد کردن نام در اون سه حالت که توضیح دادم برنامه ارور بده؟

چه کدی رو باید ویرایش کنم تا مشکل برطرف بشه؟

ممنونم منتظر پاسختون هستم 

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

دوست عزیز همه این آتیشا زیر سر این کلمه است DISTINCT :DD: 

وقتی توی یک کوئری از این کلمه استفاده کنید دیگه نمیتونید رکوردهای تکراری رو لود کنید و هر چی آیتم تکراری باشه فقط یه دونشونو برمیگردونه این رو پاک کنید و تو تیبل fasl دیگه عنوانهات عدد نزار مثلا مقدمه 1 رو مقدمه خالی بنویس

 

ولی در کل پروژتون رو غیر اصولی نوشتید کاملا مشخصه میتونست حجم کدنویسیتون نصف بشه  چه خبره این همه اکتیویتی من ده تا اکتیویتی میبینم تو این سورس تازه اگه بیشتر نباشه

واسه یه کتاب دیگه بترکونه سه تا چارتا اکتیویتی کافیشه

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

بایگانی شده

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

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

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