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

استفاده از یک متغیر قبل از مقدار دهی

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
خوب شما میتونی 2 کار بکنی (شاید هم بیشتر!)

یکی اینکه از stored proc استفاده کنی و عملیات مقایسه ای رو که در لوپ گذاشتی به موتور دیتابیس واگذار کنی. اینجوری تعداد رکوردهایی برگشتی دقیقا" همونهایی هست که میخوای

روش دوم اینه که اول محتوای رکوردها رو در array ذخیره کنی و بعد table رو از روی array بسازی
 

mehdi_25

Registered User
تاریخ عضویت
31 آگوست 2006
نوشته‌ها
202
لایک‌ها
0
محل سکونت
طهران
برای روش اول باید دوبار به دیتابیس مراجعه کنم دیگه درسته . یکی برای بدس آوردن تعداد و یکی هم برای نمایش رکورد ها .
ولی روش دومی هم بدک نیست . فقط مگه میشه آرایه ای تعریف کردن که تعداد رکورد هاش مشخص نباشه ؟
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
برای روش اول باید دوبار به دیتابیس مراجعه کنم دیگه درسته . یکی برای بدس آوردن تعداد و یکی هم برای نمایش رکورد ها .

یک بار کانکت به دیتابیس کافی هست. دیتابیس northwind رو که داری حتما". این صفحه رو ببین.
HTML:
<html>
<head>
</head>
<body>
<%
Set CONN=Server.CreateObject("ADODB.CONNection")
CONN.Provider="Microsoft.Jet.OLEDB.4.0"
CONN.Open(Server.Mappath("/ASP/DataBases/northwind.mdb"))
SQLQ = "Select * from products"
set RS = Server.CreateObject("ADODB.recordset")
RS.Open SQLQ, CONN, 3, 3
N = RS.RecordCount
M = RS.Fields.Count
Response.Write("Number of records = " & N & " , Number of Fields = " & M)
Response.Write("<table border='1'>")
Response.Write("<thead><tr>")
For J=1 To M
	Response.Write("<th>" & RS.Fields(J-1).name & "</th>")
Next
Response.Write("</tr></thead>")
For I=1 To N
	Response.Write("<tr>")
	For J=1 To M
		Response.Write("<td>" & RS.Fields(J-1) & "</td>")
	Next
	Response.Write("</tr>")
	RS.MoveNext
Next
Response.Write("</table>")
RS.Close
Set RS=Nothing
CONN.close
Set CONN=Nothing
%>
</body>
</html>
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
ولی روش دومی هم بدک نیست . فقط مگه میشه آرایه ای تعریف کردن که تعداد رکورد هاش مشخص نباشه ؟

چرا که نه؟

HTML:
<html>
<head>
</head>
<body>
<%
Set CONN=Server.CreateObject("ADODB.CONNection")
CONN.Provider="Microsoft.Jet.OLEDB.4.0"
CONN.Open(Server.Mappath("/ASP/DataBases/northwind.mdb"))
SQLQ = "Select * from products"
set RS = Server.CreateObject("ADODB.recordset")
RS.Open SQLQ, CONN
N = 0
M = 0
Dim TBL(), HDR()
For each X in RS.Fields
	M = M + 1
	Redim Preserve HDR(M) 
	HDR(M) = RS.Fields(M-1).name
Next

Do While Not RS.EOF
	N = N + 1
	ReDim Preserve TBL(N*M)
	FOR J=1 To M
		TBL(J + (N-1)*M) = RS.Fields(J-1)
	Next
	RS.MoveNext
LOOP
RS.Close
Set RS=Nothing
CONN.close
Set CONN=Nothing
Response.Write("Number of records = " & N & " , Number of Fields = " & M)
Response.Write("<table border='1'>")
Response.Write("<thead><tr>")
For J=1 To M
	Response.Write("<th>" & HDR(J)& "</th>")
Next
Response.Write("</tr></thead>")
For I=1 To N
	Response.Write("<tr>")
	For J=1 To M
		Response.Write("<td>" & TBL(J + (I-1)*M) & "</td>")
	Next
	Response.Write("</tr>")
Next
Response.Write("</table>")
%>
</body>
</html>
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
البته با جاوااسکریپت (سمت سرور) کد زیباتری داری;)

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

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
ای بابا اگه از آزاکس استفاده کردی یه لیبل بذار بعد هروقت دلت خواست لیبل اه رو عوض کن دیگه این که دیگه قصه نداره ؟!؟!
ببنیم توی asp 3 مگه آزاکس هم میشه استفاده کرد :O
 

mehdi_25

Registered User
تاریخ عضویت
31 آگوست 2006
نوشته‌ها
202
لایک‌ها
0
محل سکونت
طهران
mazoolagh من با روش دوم بیشتر حال کردم . ممنون عزیزم
ای بابا اگه از آزاکس استفاده کردی یه لیبل بذار بعد هروقت دلت خواست لیبل اه رو عوض کن دیگه این که دیگه قصه نداره ؟!؟!
ببنیم توی asp 3 مگه آزاکس هم میشه استفاده کرد :O
می بینی که شده حسین جان :D . راستی لیبل رو چطوری تعریف می کنیم تو ASP3 . خوندی پست ها رو که می خوام از آخر برنامه یه متغیر رو بفرستم بالا تر . فقط از Javascript نمیشه استفاده کنم . علتش رو هم بالا گفتم
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
لیبل رو توی ای اس پی تعریف نمیکنن توی html تعریف میکنین که منظور میشه همون تگ div یا span . مطمین باش میشه از جاوا اسکریپت استفاده کرد من هنوزم نفهمیدم دقیقا چرا نمیتونی...و اگه احیانا با جاوااسکریپت نشه راهی سمت سرور نداره!( آخه IIS بدبخت از کجا باید مقدار متغیری که هنوز مقدار دهی نشه رو بدست بیاره من نمیدونم :p)
 

mehdi_25

Registered User
تاریخ عضویت
31 آگوست 2006
نوشته‌ها
202
لایک‌ها
0
محل سکونت
طهران
لیبل رو توی ای اس پی تعریف نمیکنن توی html تعریف میکنین که منظور میشه همون تگ div یا span . مطمین باش میشه از جاوا اسکریپت استفاده کرد من هنوزم نفهمیدم دقیقا چرا نمیتونی...و اگه احیانا با جاوااسکریپت نشه راهی سمت سرور نداره!( آخه IIS بدبخت از کجا باید مقدار متغیری که هنوز مقدار دهی نشه رو بدست بیاره من نمیدونم :p)
بخاطره اینه که من برای لود کردن صفحه از Ajax استفاده کردم و از همین innerHTML .
دیگه اسکریپت های جاوا اسکریپت رو اجرا نمی کنه .
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
نمیدونم کد آژاکست چطوریه اما شاید بتونی بعد از اینکه با آژاکس صفحه رو لود کردی قسمت مورد نظرت رو توی اطلاعات صفحه تغییر بدی . مثلا همون div رو بالای صفحت بگذاری و مقدارش رو مثلا "[replace this]" قرار بدی و اون چیزی که آخر صفحه با ای اس پی بدست میاری رو هم آخر صفحه بنویسی . بعد با آژاکس که اطلاعات صفحه رو گرفتی قسمت آخر صفحه رو (بسته به طولش و یا با یه نشونه) پیدا و جدا کنی و با replace,replace this ش کنی . اینطوری اون قسمت آخر رو جدا کردی و گذشتی اول.نمیدونم منظومو گرفتی,یا اصلا میشه یا نه....
 

mehdi_25

Registered User
تاریخ عضویت
31 آگوست 2006
نوشته‌ها
202
لایک‌ها
0
محل سکونت
طهران
مرسی پلاس جان .
من متغیر مورد نظر رو نیاز دارم که اون بالا یکم تغییرش بدم و یه بلاهایی بالید سرش در بیارم .
اینطوری هم باز باید از توابع جاوااسکریپت کمک بگیریم که من با اون مشکل دارم . برنامه لودشون نمی کنه
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
مگه آژاکست با جاوا اسکریپت نیست؟؟ replace رو هم باید با همون اسکریپت انجام بدی...اگه اون اسکریپت کار نکنه که یعنی اصلا صفحه هات نمیان...
 
بالا