private void showdata()
{
if (showdatatype == "A")
{
var ac = (from a in db.accharts
select a).OrderBy(o => o.glcode)
}
else if (showdatatype == "B")
{
var ac = (from a in db.accharts
select a).OrderByDescending(o => o.glcode)
if(ac.count() > 0) // ตรงนี้ไม่มีปัญหา
{
..
}
}
if (ac.count() > 0) // ตรงนี้ Error ครับ เครื่องไม่รู้จัก ac
{
..
}
}
รบกวนผู้รู้ตอบด้วยครับ
Tag : .NET, Ms SQL Server 2008, Win (Windows App), VS 2010 (.NET 4.x)
ผมเองก็ยังไม่เคยเขียน VS 2010 (ใช้ แต่ 2008) ครับรู้สึกในโค้ดจะเขียน Linq /C# แต่เท่าที่ดูในโค้ดที่คุณเขียนเกิดจาก ตัวแปร มันอยู่ในคนละ Scope กันซึ่ง ตัวแปรจะโดนคืนค่า เมื่อจบ if แรก
if (showdatatype == "A")
{
var ac = (from a in db.accharts
select a).OrderBy(o => o.glcode)
}
else if (showdatatype == "B")
{
var ac = (from a in db.accharts
select a).OrderByDescending(o => o.glcode)
if(ac.count() > 0) // ตรงนี้ไม่มีปัญหา
{
..
}
}//ตรงนี้ครับ ตัวแปร ac น่าจะโดนทำลายไปแล้ว
เมื่อเปิด tag if ใหม่ ac จะใช้งานไม่ได้แล้ว
**วิธีแก้คือประกาศไว้ก่อน if ตัวแรกเลยครับ
Date :
2010-08-25 16:52:35
By :
Conair
No. 2
Guest
แล้วการประกาศตัวแปรไว้ล่วงหน้าใช้คำสั่งอะไรครับ
เช่น
var ac; // อย่างนี้ก็รู้สึกว่าจะ Error เหมือนกัน
if (showdatatype == "A")
{
ac = (from a in db.accharts
select a).OrderBy(o => o.glcode)
}
ไม่รู้ว่าจะกำหนด var ยังไง หรือกำหนด Option อื่นๆเพิ่มเติมได้ไหม
คือ การประกาศตัวแปล จะต้องดู scope ด้วยครับ แบบตัวอย่างนี้ ประกาศตัวแปลภายใน if จะไม่สามารถนำตัวแปลนั้นไปใช้นอก if ได้ ทางแก้คือ ให้ประกาศตัวแปลแบบ private หรือ public มาลองรับตัวแปลภายใน if