PDA

View Full Version : سوال: نمایش یک پیغام هنگام باز کردن برنامه



vahidth
سه شنبه 12 دی 1391, 09:06 صبح
سلام
دوستان من یک دیتابیس ساختم با یک فیلد hadis از نوع nvarchar میخوام توش حدود 30 تا حدیث بنویسم که وقتی برنامه رو اجرا میکنم هر بار یک حدیث بصورت اتفاقی نمایش داده بشه چطوری این کارو انجام بدم لطفا با کد بگین و کدها رو هم توضیح بدین.

vahidth
سه شنبه 12 دی 1391, 09:56 صبح
داداش من با سی شارپ میخوام بنویسم نه با vb ,asp

group45
سه شنبه 12 دی 1391, 10:58 صبح
با سلام
رکورد هاتون رو به ترتیب شماره گذاری کنید. بعد یه عدد رندم تولید کنید و اطلاعات اون خونه رو نمایش بدید.

vahidth
سه شنبه 12 دی 1391, 14:00 عصر
داداش لطفا با کد توضیح بده

vahidth
سه شنبه 12 دی 1391, 16:02 عصر
از دوستان یکی نیست منو کمک کنه؟...

danialafshari
سه شنبه 12 دی 1391, 16:21 عصر
سلام دوست عزیز
برنامه نویس کسی نیست که طبق یک زبان برنامه نویسی کار می کند برنامه نویس فردی است که قوه ی تحلیل داشته باشه و مسائل رو تحلیل کند در اصل یک محقق است
شما همیشه نباید منتظر کد باشید! نوشتن این برنامه برای من کاری نداره ولی بهتره خودتون هم یک تلاشی بکنید دوستمون هم که راهنمایی کردن
باید از تابع Random استفاده کنید و در دیتابیس یک فیلد با نام ID که از نوع AutoNumber یا همون Indenfity (همچین چیزی) هست قرار دهید و هر بار که فرم Load می شود در query ای که اطلاعات را Select می کند به جای مقدار ID مقدار Random ID را بگیرد
اینم از تحلیلش گر چه بهتر بود خودتون این کار رو انجام میدادید
موفق باشید

samadblaj
سه شنبه 12 دی 1391, 16:33 عصر
سلام من اینو برای یکی از پروژه هام نوشته بودم...

NetDatabasEntities db = new NetDatabasEntities();

var query1 = (from i in db.tbl_hadis
select i).Count();
int intI = Convert.ToInt16(query1);

Random r = new Random();
int intj = r.Next(1, intI);
var query2 = (from j in db.tbl_hadis
where j.id == intj
select j).SingleOrDefault();
labelX1 .Text = "حدیث : " + query2.hadis .ToString();

group45
سه شنبه 12 دی 1391, 16:42 عصر
داداش لطفا با کد توضیح بده
با سلام
این کارایی رو که میگم انجام بدید
کنار اون حدیث یه فیلد به نام num از نوع int بسازید.
زمانی که یه حدیث جدید وارد میکنید با دستور زیر بزرگترین مقدار num رو پیدا کنید و با sqldartareader اونو تو متغیری بریزید و با دستور بعدی یکی بعدشو به num جدید بدید

select max num as m from t_bl
........
insert into t_bl values(N'"hadis",_num)

حالا واسه تولید عدد رندم

random r=new random();

با کد زیر عدد رندم بین دو عددتولید کنید

int s=r.next(1,100);

mmd2009
سه شنبه 12 دی 1391, 16:46 عصر
با سلام

نیازی به ایجاد کلاس Random نیست. خود Sql این امکان رو داره. کوئری Select مورد نظرتون رو به این شکل تغییر بدید :


SELECT * FROM table ORDER BY RAND() LIMIT 1

موفق باشید

group45
سه شنبه 12 دی 1391, 16:49 عصر
حالا با عدد رندمی که بدست آوردید بگردید دنبال خونه ای که num اون این باشه.

select hadis from t_bl where num=s

که در کد بالا s باید به درستی جانشین بشه

امیدوارم مشکلتون حل بشه

vahidth
سه شنبه 12 دی 1391, 17:05 عصر
داداش کد شما رو اینجوری نوشتم ولی ارور داد

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace hadis
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\zxc.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
NetDatabasEntities db = new NetDatabasEntities();
var query1 = (from i in db.hd select i).count();
int intI = Convert.ToInt16(query1);
Random r = new Random();
int intj = r.Next(1, intI);
var query2 = (from j in db.hd

where j.id == intj
select j).SingleOrDefault();
textBox1.Text = "حدیث : " + query2.hadis.ToString();


}
}
}

97665
داداش انگار از دیتابیس مشکل میگیره

vahidth
سه شنبه 12 دی 1391, 17:08 عصر
با سلام
این کارایی رو که میگم انجام بدید
کنار اون حدیث یه فیلد به نام num از نوع int بسازید.
زمانی که یه حدیث جدید وارد میکنید با دستور زیر بزرگترین مقدار num رو پیدا کنید و با sqldartareader اونو تو متغیری بریزید و با دستور بعدی یکی بعدشو به num جدید بدید

select max num as m from t_bl
........
insert into t_bl values(N'"hadis",_num)

حالا واسه تولید عدد رندم

random r=new random();

با کد زیر عدد رندم بین دو عددتولید کنید

int s=r.next(1,100);

داداش من میخوام وقتی هر بار برنامه رو اجرا میکنم خودش بصورت تصادفی یک حدیث رو تو تکست باکس بصورت تایپی بنویسه
داداش یه فیلد دیگه بنام num اضافه کردم حالا چیکار کنم
داداش با کد بگی یکم درموردش توضیح بدی خیلی خوب میشه

danialafshari
سه شنبه 12 دی 1391, 17:32 عصر
سلام
آسون بود و ساختش بیشتر از 5 دقیقه هم طول نکشید ای کاش خودت میساختی... این چیزها برای تحلیل خوبن که استفاده نمی کنید و سریعا از بقیه کمک میگیرید
به خاطر خودتون میگم والا سودی که واسه من نداره
بفرمائید :

vahidth
سه شنبه 12 دی 1391, 17:54 عصر
میدونم داداش ولی من تازه 1 ماهه دارم با سی شارپ کار میکنم هر روز حدود 2 ساعت آموزش تصویری رو نگاه میکنم میدونم خودم اشتباه دارم میکنم اما خوب بعضی چیزا رو هم باید از یکی کمک بگیری

vahidth
سه شنبه 12 دی 1391, 17:56 عصر
ممنون داداش داداش چطوری میتونم بصورت انیمیشن تایپی استفاده کنم

danialafshari
سه شنبه 12 دی 1391, 17:59 عصر
میدونم داداش ولی من تازه 1 ماهه دارم با سی شارپ کار میکنم هر روز حدود 2 ساعت آموزش تصویری رو نگاه میکنم میدونم خودم اشتباه دارم میکنم اما خوب بعضی چیزا رو هم باید از یکی کمک بگیری

کمک باید در زمینه استفاده از تکنولوژی برنامه باشه نه کد آماده
من خودم این اولین برنامه ای هست که به این شکل نوشتم آیا از کسی کمک گرفته بودم؟ نه فقط برنامه رو تحلیل کردم و با تکنولوژی برنامه بازی کردم و از اونا طبق نیازم استفاده کردم

موفق باشی

danialafshari
سه شنبه 12 دی 1391, 18:09 عصر
ممنون داداش داداش چطوری میتونم بصورت انیمیشن تایپی استفاده کنم

سلام دوست عزیز
انیمیشن کردن تایپی یکم دنگ و فنگ داره ولی تحلیلش اینطور میشه که این متن رو به جای نمایش در label در یک متغیر میریزید و با متدهای رشته =Split اون ها رو جدا می کنی و بعد توسط تایمر با یک اینترول تعیین شده میچسبونی
شاید هم اشتباه باشه این چیزیه که الان به ذهنم اومد و نیاز به وقت بیشتری داره
ولی برای عوض کردن نوشته در مدت زمان مشخص می تونی یک تایمر بزاری و Interval = 500 بزاری و کد زیر رو درون تایمر بزاری
private void timer1_Tick(object sender, EventArgs e)
{
if (label1.ForeColor == Color.Black)
{
label1.ForeColor = Color.Red;
}
else
{
label1.ForeColor = Color.Black;
}
}

موفق باشی

vahidth
سه شنبه 12 دی 1391, 20:37 عصر
داداش یه تایمر اضافه کردم و این کد رو نوشتم توش ولی نمیدونم چطوری حدیث رو به این صورت دراورم
string text = "متن حدیث";
static int index = 0;
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = text.Substring(0, index) + "■";
index++;
if (index == text.Length + 1)
{
index = 0;
//timer1.Enabled = false;
}

vahidth
چهارشنبه 13 دی 1391, 09:43 صبح
چطوری میتونم این کد انیمیشنی کردن متن رو در پروِه استفاده کنم

danialafshari
چهارشنبه 13 دی 1391, 12:52 عصر
سلام
باید عکس ها رو خودت آماده کنی و در برنامه قرار بدی و بعد مثلا اگر تصویر یک کدش 98023 بود باید در کد نویسی معادل این کد رو هم بنویسی و وقتی که کاربر کد رو میزنه با این کد مقایسه میشه
اگر من باشم با Dictionery موجود در C#‎ می نوشتم
مثل سورس قبلیه برای هر تصویر یک شماره ID میدی بعد برنامه موقع باز شدن یک عدد به صورت تصادفی انتخاب میکنه و با Dictionery مقایسه میکنه (سورس کلاس Dictionery) در سایت موحود است
موفق باشی

vahidth
چهارشنبه 13 دی 1391, 14:09 عصر
سلام
باید عکس ها رو خودت آماده کنی و در برنامه قرار بدی و بعد مثلا اگر تصویر یک کدش 98023 بود باید در کد نویسی معادل این کد رو هم بنویسی و وقتی که کاربر کد رو میزنه با این کد مقایسه میشه
اگر من باشم با Dictionery موجود در C#‎‎ می نوشتم
مثل سورس قبلیه برای هر تصویر یک شماره ID میدی بعد برنامه موقع باز شدن یک عدد به صورت تصادفی انتخاب میکنه و با Dictionery مقایسه میکنه (سورس کلاس Dictionery) در سایت موحود است
موفق باشی
سلام داداش
میشه بگی چه عکسی ؟
این کد رو که نوشتم میخوام وقتی که برنامه اجرا شد همون حدیث هایی رو بصورت رندوم می اومد اینبار به صورت انیمیشنی بیاد(نوشته ها بصورت تایپی بیاد)

vahidth
پنج شنبه 14 دی 1391, 10:32 صبح
دوستان این کد رو دوستم اقای danialafshari (http://barnamenevis.org/member.php?68467-danialafshari) نوشتن که برای نمایش حدیث بصورت رندوم هست
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='"+Environment.CurrentDirectory+@"\dbHadis.mdb'");
OleDbDataAdapter adap = new OleDbDataAdapter();
DataTable dt = new DataTable();

public Form1()
{
InitializeComponent();
}

public void select(string source)
{
OleDbCommand cmd = new OleDbCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = source.Trim().ToString();
cmd.ExecuteNonQuery();
adap.SelectCommand = cmd;
adap.SelectCommand.ExecuteNonQuery();
dt.Clear();
adap.Fill(dt);
con.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
Random rnd=new Random();
int x= rnd.Next(1,10); //تعداد حدیث ها

select(@"SELECT ID, hadis FROM Table1 WHERE (ID = " + x + ")");
label1.DataBindings.Add("Text", dt, "hadis");
}

این کد رو نوشتم
متن رو بصورت انیمیشن تایپی میکنه اما نمیدونم چطوری متن حدیث رو به این صورت دراورم
string text = "متن حدیث";
static int index = 0;
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = text.Substring(0, index) + "-";
index++;
if (index == text.Length + 1)
{
index = 0;
//timer1.Enabled = false;
}

danialafshari
پنج شنبه 14 دی 1391, 11:10 صبح
در پست قبلی من منظور شما رو اشتباه متوجه شدم فکر کردم کد امنیتی می خواستی.
برنامه رو اصلاح کردم

بفرمائید :