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

مشکل این کد چیه!؟ (پایگاه داده SQL)


Mehdi.s

سوال

سلام مهندسان عزیز

 

من چن تا ستون دارم
10 تا سطر
ستون اول اعدادی بین 1 تا 5 هستش ثابته
ستون دوم داخل برنامه کاربر با یک سری کارایی که انجام میده پر میشه با اعدادی بین 1 تا 5

میخوام یه شرطی باشه اگه سطر یک ستون دوم، با سطر یک ستون اول برابر بود، متغیر s1 یکی بهش اضافه بشه و اگه برابر نبود متغیر s2 یکی اضافه بشه

 

کلا اینجوری بگم:

میخوام اطلاعات تمامی سطر های دو تا ستون رو باهم مقایسه کنم

 

اینم تیکه کد اصلی

	c = sq.ExecQuery("SELECT * FROM tblaz")			
		For i=0 To c.RowCount-1
			c.Position = i
			
			data1 = c.GetString("data1")
			data2 = c.GetString("data2")
			
			If  data1 == data2 Then
				s1=s1+1
			else If data1 <> data2 Then
				s2=s2+1
			End If	
			
		Next
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

 

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

خب با دستورات  sql این کار رو انجام بدید :

s1=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data1=data2")
s2=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data1<>data2")
s3=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data2=0")

 

سلام داداش

بهترین و ساده ترین روشه

خوشم اومد

مرسی

 

البته کدت رو به این صورت تغیر دادم:

s1=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data1=data2")
s2=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data1<>data2 AND data1 <> 0")
s3=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data2=0")

تعداد 0 های ستون data2 رو تو متغیر s3 حساب کردم و نمیخوام تو متغیر s2 هم داشته باشم.

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

سلام

الان اروری چیزی دارید هموطن؟

if date1 = date2 رو چک کنید

شاید به 2 مساوی گیر داده...

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

سلام

الان اروری چیزی دارید هموطن؟

if date1 = date2 رو چک کنید

شاید به 2 مساوی گیر داده...

 

سلام اقا شهاب

تک مساوی هم میزنم کار نمیکنه

 

این خطا رو میده برام

 

Untitled.jpg

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

خطاتون که میگه نتیجه ای پیدا نشده انگار

یه عکس از دیتابیستون بذارید

اگرم ممکنه کدای مربوط به دیتابیس اکتیویتی رو قرار بدید

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

خطاتون که میگه نتیجه ای پیدا نشده انگار

یه عکس از دیتابیستون بذارید

اگرم ممکنه کدای مربوط به دیتابیس اکتیویتی رو قرار بدید

 

کدای اکتیویتی که همون اول فرستادم همونه

 

اینم جدول پایگاه داده

post-3651-0-17919300-1467582621_thumb.jpg

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

هموطن فیلد data1 از نوع integer هست اونوقت شما اومدین با  getstrinng مقدارشو گرفتین؟؟؟ :fekr:  :fekr: معلومه که خطا میگیره

در ضمن دوتا متغیر string اینجوری که شما نوشتین با هم مقایسه نمیشن باید از تابع equal استفاده کنید

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

هموطن فیلد data1 از نوع integer هست اونوقت شما اومدین با  getstrinng مقدارشو گرفتین؟؟؟ :fekr:  :fekr: معلومه که خطا میگیره

در ضمن دوتا متغیر string اینجوری که شما نوشتین با هم مقایسه نمیشن باید از تابع equal استفاده کنید

 

سلام

ممنون

()getInt زدم درست شد!

فقط شرطش مونده

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

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

بازم یه اشتباه دیگه

دقت کردین تو حلقه داره چه اتفاقی می افته؟ :fekr:

s1 و s2 فقط دوتا متغیرن که هرکدوم فقط یه مقدار به خودش میگیره از map استفاده کن عزیز

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

بازم یه اشتباه دیگه

دقت کردین تو حلقه داره چه اتفاقی می افته؟ :fekr:

s1 و s2 فقط دوتا متغیرن که هرکدوم فقط یه مقدار به خودش میگیره از map استفاده کن عزیز

 

سلام

 

ببینید من میخوام ستون یک رو با ستون دو مقایسه کنم

اگه ستون یک با ستون دو مساوی بود متغیر s1 یکی بهش اضافه بشه

اگه مساوی نبود به متغیر s2 یکی اضافه بشه

و اگه ستون دو مقدارش مساوی صفر بود یه متغیر دیگه باشه مثلا s3 به این یکی اضافه بشه

 

در اخر سر این سه تا متغیر رو لازم دارم

 

کسی میتونه کدشو برام بزنه یا راهنمایی کنه؟

مخم دیگ تعطیل شده بخدا :wacko1:

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

عزیزم عرض شد خدمتتون که از map باید استفاده کنی

تو این روشی که شما رفتین فقط رکورد آخر در نظر گرفته میشه چون فقط یه متغیر دارین و تو هربار اضافه شدن حلقه این هی آپدیت میشه و میرسه تا رکورد آخر پس باید برای هر رکورد این متغرها رو تعریف کنی که بهترین کار استفاده از فایله

اینجوری عمل کن تو هر رکورد یه فایل مپ تعریف کن و مقدار متغیرهای s1 و s2 و s3 رو به صورت زیر بش بده البته اول کد زیر که واسه چک کردن فایل مپ اگه قبلا ساخته شده رو بزن

Dim m As Map
	If File.Exists(File.DirDefaultExternal,"map"&i) Then
		m=File.ReadMap(File.DirDefaultExternal,"map"&i)'ممکنه قبلا تعریف شده باشه
	End If
	

متغیرهاتم به این صورت مقدار دهی کن با شرطی که میخوای چک کن

m.Put("s1map"&i,m.GetDefault("s1map"&i,0)+1)

و در نهایت فایل رو بنویس

File.WriteMap(File.DirDefaultExternal,"map"&i,m)

امید وارم متوجه شده باشین :fekr:  :malih:

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

سلام

 

ببینید من میخوام ستون یک رو با ستون دو مقایسه کنم

اگه ستون یک با ستون دو مساوی بود متغیر s1 یکی بهش اضافه بشه

اگه مساوی نبود به متغیر s2 یکی اضافه بشه

و اگه ستون دو مقدارش مساوی صفر بود یه متغیر دیگه باشه مثلا s3 به این یکی اضافه بشه

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

خب با دستورات  sql این کار رو انجام بدید :

s1=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data1=data2")
s2=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data1<>data2")
s3=sq.ExecQuerySingleResult("SELECT COUNT(*) FROM tblaz WHERE data2=0")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

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

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