PDA

View Full Version : سوال: کار با دیتابیس اکسس و پیکچر باکس



hadi vafaii
جمعه 28 آذر 1393, 22:57 عصر
عرض سلام دارم خدمت تمام دوستان چجوری میشه پیکچر باکسی رو جوری طرح ریزی کرد که عکس رو راندوم از دیتابیس اکسس بصورت رندوم بخونه و هر بار که اجرا میشه یه عکسی رو نشون بده و احتمال تکرارش هم کم باشه

hadi vafaii
جمعه 28 آذر 1393, 23:46 عصر
از اساتید کسی نبود کمک کنه

مجید آرتا
شنبه 29 آذر 1393, 09:16 صبح
کار ساده ایست!
برای هر عکس یک آیدی در نظر بگیر( یعنی باید یک فیلد آیدی توی تیبلت باشه)
تنها کاری که میکنی میایی همه ی آِیدی هارو میگیری و رندوم می کنی.
بعدشم دیگه آیدی مورد نظرو نسبت میدی به پیکچر باکست

hadi vafaii
شنبه 29 آذر 1393, 10:03 صبح
اگه میشه یه نمونه قرار بدین و دوتا عکس که رندوم نمایش داده بشه

khokhan
شنبه 29 آذر 1393, 18:23 عصر
اگه میشه یه نمونه قرار بدین و دوتا عکس که رندوم نمایش داده بشه
توی کوئری که برای فراخوانی تصاویر می نویسی آخرش کد مربوط به مرتب سازی بر اساس فیلد id رو به صورتی که با انتخاب راندم از همون فیلدقرار بده و داخلش یه متد قرار بده مثلا منهای صد هزار رو به زمان جاری ضرب کنه و بعد در مقدار فیلد آی دی ضرب کنه
اینطوری :


OleDbCommand sqlCmd = new OleDbCommand("SELECT * FROM zirna ORDER BY rnd(-10000000*TimeValue(Now())*[id])", conn);

کل کدهای فراخوانی راندم از بانک اکسس به این شکل می شه :



private void btnDBToPicBox_Click(object sender, EventArgs e)
{
try
{
pbBLOB.Image = null;
label2.Text = "";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();


OleDbCommand sqlCmd = new OleDbCommand("SELECT * FROM zirna ORDER BY rnd(-10000000*TimeValue(Now())*[id])", conn);
OleDbDataAdapter sqlDA = new OleDbDataAdapter(sqlCmd);
DataSet ds = new DataSet();
sqlDA.Fill(ds, "zirna");
int c = ds.Tables["zirna"].Rows.Count;

if (c > 0)
{
Byte[] byteBLOBData = new Byte[0];
byteBLOBData = (Byte[])(ds.Tables["zirna"].Rows[c - 1]["pic"]);
MemoryStream stmBLOBData = new MemoryStream(byteBLOBData);
pbBLOB.Image = Image.FromStream(stmBLOBData);
label2.Text = ds.Tables["zirna"].Rows[c - 1][0].ToString();
lblMsg.Text = "فراخوانی شد";
}
conn.Close();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}