PDA

View Full Version : لطفاً کمک کنید (دیتا بیس و تکست باکس)



als_1360
سه شنبه 01 اسفند 1385, 20:57 عصر
با سلام به دوستان محترم
من دوتا سوال داشتم که در C# دات نت 2005 برایم اتفاق افتاده اگر کسی جواب این سوالات را می داند یا مرجعی برای آن سراغ دارد لطفاً بگوید.
اول اینکه من در یک فرم یک تکست باکس دارم که مخفی است یعنی (visible = false) چطور می توانم به آن مقدار دهی کنم یا از آن مقدار بگیرم (البته این کار TextBox.Text = "Ali";را هم کردم ولی نشد)
دوم اینکه من به یک دیتابیس اکسس به وسیله Dataset وصل شده ام و از یک BindingSource و یک TableAdapter استفاده کرده ام ، چه طور می توانم به یک فیلد از این دیتا بیس که در یک رکورد موجود است دسترسی پیدا کنم
اگر لطف کنید و جواب کامل بدهید متشکرم چون من تازه با سی شارپ شروع به کار کرده ام .

PC2st
سه شنبه 01 اسفند 1385, 21:56 عصر
اول اینکه من در یک فرم یک تکست باکس دارم که مخفی است یعنی (visible = false) چطور می توانم به آن مقدار دهی کنم یا از آن مقدار بگیرم (البته این کار TextBox.Text = "Ali";را هم کردم ولی نشد)
فرقی نمیکنه که Visible باشه یا نباشه... باید اینجوری نوشته بشه textBox1.Text
چون TextBox یک کلاس توی دات نت هست نه یک شئ ایجاد شده
(تا شئ ای از یک کلاس ایجاد نشود، نمیتوان از آن استفاده کرد مگر اینکه کلاس بصورت استاتیک باشد).

فکر کنم سوال دوم قبلا توی همین انجمن مطرح شده، بهرحال:


ds.Tables["نام جدول"].Rows[شماره رکورد][شماره فیلد].ToString()

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

als_1360
چهارشنبه 02 اسفند 1385, 20:04 عصر
ممنون از جوابتون
شماره رکورد رو چه جوری می شه پیدا کرد در حالی که دیتا بیس ما فیلتر شده است ؟

PC2st
چهارشنبه 02 اسفند 1385, 23:09 عصر
منظور شما رو خوب متوجه نشدم... اگر دیتابیس خود را بکمک یک دستور SELECT فیلتر کرده و بعدش بکمک DataAdapter (براساس اون دستور SELECT)، یک جدول رو توی DataSet پر کرده باشید، (برای اینکه به یک رکورد خاص توی یک جدول از DataSet دسترسی پیدا کنید، فرقی ندارد که شما از چه دستور SELECT ائی برای پرکردن DataSet استفاده کرده باشید) بهرحال یکسری رکورد توی جدول DataSet ذخیره شده و شماره این رکوردها از 0 تا الی آخر شماره گذاری شده... شماره رکورد 0 یعنی همان رکورد اول، شماره رکورد برابر 1 یعنی رکورد دوم... ترتیب قرار گیری رکوردها هم به این بستگی داره که رکوردها براساس چه فیلدی مرتب شده باشند (حالا ممکنه که اصلا مرتب هم نشده باشند). پس شماره یک رکورد از اندیس 0 شروع میشه تا الی آخر.
حالا ممکنه که مثلا بخواهید بدونید که رکوردی که فیلد Name اون، مقدارش Hamid باشه، شماره رکوردش چنده؟ میتونی از Find استفاده کنی.


bindingSource1.Filter = "Name LIKE 'Ham*'";
DataTable dt = dataSet1.Tables["tableName"];
dt.PrimaryKey = new DataColumn[1] { dt.Columns["Name"] };
DataRow dr = dt.Rows.Find("Hamid");
int RecordIndex = dt.Rows.IndexOf(dr);

در کد فوق، bindingSource1 یک شئ از نوع BindingSource بوده و dataSet1 یک شئ از نوع DataSet هست (که قبلا خودتون ایجادش کرده اید)
همونطور که میدونی، با کمک دستور اول، خواستیم کاری کنیم که فقط رکوردهائی نمایش داده بشه که فیلد Name آنها با Ham شروع شده باشه...
tableName نام جدولی هست که توی dataSet1 قرار داره. Name نام فیلدی هست که میخوایم ببینیم کدام رکورد مقدار این فیلدش برابر Hamid هست (؟) که شماره آن رکورد توی متغیر RecordIndex ذخیره میشه. فقط توجه داشته باشید که به کوچیکی یا بزرگی حروف حساس نیست، مثلا اگر hamid رو میگذاشتیم، نتایج کاملا یکسانی بدست می‌آوردیم. با توجه به اینکه در این روش اگر بیش از یک رکورد، مقدار فیلد Name آنها، یکسان بود، مثلا دو رکورد داشتیم که جفتشون فیلد Nameشون Hamid بود، برنامه error میده...
و این هم باید مد نظر داشت، رکوردهائی که مقدار فیلدشون برابر HamidGol یا With Hamid یا غیره... باشه، هیچگاه پیدا نخواهند شد.
رکوردی که اندیس آن در متغیر RecordIndex ذخیره میشه، چه در حالت استفاده از bindingSource1.Filter و چه در حالتی که از این نوع فیلتر استفاده نکنیم، دارای شماره یکسان است.
نمیدونم این جواب به سوال شما ربط داشت یا خیر!! (!)