Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2016, 20:21   #1
Bergamot
Пользователь
 
Регистрация: 06.01.2016
Сообщений: 18
По умолчанию Выводить вопросы из БД рандомно,а не по порядку.

В БД хранятся вопросы теста,но они выводятся в Label не попорядку,а рандомно и повторяются.В чем причина?
Подключение к БД
Код:
 //class for load data from DataBase
    class DataLoader1
    {
 
     //Fields
     private DataTable dt;
     string basePath;
     //ctor
     public DataLoader1()
     {
     basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Base1.dblite");
     if (!File.Exists(basePath))
     {
     throw new FileNotFoundException("File of DataBase not found!");
     }
     dt = new DataTable("Table");
     }
     //Load data method
     public DataTable GetTestData()
     {
     string connectionStr = @"data source=" + basePath;
     using (SQLiteDataAdapter dAdapter = new SQLiteDataAdapter("SELECT * FROM Table", connectionStr))
     {
     dAdapter.Fill(dt);
     }
     return dt;
     }
    }
Код основной формы
Код:
public partial class Form6 : Form{
        DataTable testTable = null;
        volatile string answer = null;
        EventWaitHandle wh = new AutoResetEvent(false);
        public event EventHandler<TestEventArg> testResultEvent;
 
        //ctor
        string item;
        public Form6(){
            InitializeComponent();
            rbNo.Checked = false;
            rbYes.Checked = false;
            this.Load += new EventHandler(Form6_Load);
            btnStartTest.Click += new EventHandler(btnStartTest_Click);
            
            testResultEvent += new EventHandler<TestEventArg>(Form6_testResultEvent);
        }
        //Event handler
        void Form6_testResultEvent(object sender, TestEventArg e)
        {
 
            this.Invoke((Action)(() =>
            {
                progressBar1.Value = 0;
                btnStartTest.Enabled = true;
                lblQuestion.Text = "";
                rbNo.Click -= rbYesNo_Click;
                rbYes.Click -= rbYesNo_Click;
            }));
            string info = GetTestResults(e.testResult);
        }
        //rbClicks
        void rbYesNo_Click(object sender, EventArgs e) {
            string ans = ((RadioButton)sender).Text;
            if (ans == "Да") {
                answer = "answer_Yes";
            }
            else {
                answer = "answer_No";
            }
            wh.Set();
        }
        //btnStartClick
        void btnStartTest_Click(object sender, EventArgs e) {
            progressBar1.Maximum = testTable.Rows.Count;
            progressBar1.Minimum = 0;
            progressBar1.Step = 1;
            Task.Factory.StartNew(() => { Test(); });
            btnStartTest.Enabled = false;
            rbYes.Click += new EventHandler(rbYesNo_Click);
            rbNo.Click += new EventHandler(rbYesNo_Click);
        }
        //FormLoad
        void Form6_Load(object sender, EventArgs e) {
            try {
                DataLoader1 loader = new DataLoader1();
                testTable = loader.GetTestData();
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message, "Файл отсутствует");
                this.Close();
                return;
            }
            this.Text = "Тест"+ " 'Тип характера'";
        }
        //Test Method
        void Test() {
            int index = 0;
            int result = 0;
    
            while (index < testTable.Rows.Count) {
                lblQuestion.Invoke((Action)(() => {
                    lblQuestion.Text = (string)testTable.Rows[index]["Question"];
                }));
                progressBar1.Invoke((Action)(() => { progressBar1.PerformStep(); }));
                wh.WaitOne();
                result += (int)testTable.Rows[index][answer];
                index++;
            }
            if (testResultEvent != null) {
                TestEventArg args = new TestEventArg(result);
                testResultEvent(this, args);
            }
        }
        string GetTestResults(int result)
        {
            if (result >= 0 && result <= 19)
            {
                MessageBox.Show();
            }
            else if (result >= 20 && result <= 25)
            {
                MessageBox.Show();
                File.AppendAllText("Result.dat", "Профессионал!");
                File.AppendAllText(Application.StartupPath + "\\Result.dat", "\r\n" + item, Encoding.Default);
            }
            else if (result >= 25)
            {
                MessageBox.Show();
                File.AppendAllText("Result.dat", "Эпикуреец!");
                File.AppendAllText(Application.StartupPath + "\\Result.dat", "\r\n" + item, Encoding.Default);
            }
            return null;
        }
 
        private void Form6_Load_1(object sender, EventArgs e)
        {
            BackColor = Color.Lavender;
        }
 
        private void btnStartTest_Click_1(object sender, EventArgs e)
        {
 
        }
    }
    //class for EventArgs
    public class TestEventArg : EventArgs
    {
        public readonly int testResult;
        public TestEventArg(int res)
        {
            testResult = res;
        }
    }
}
Bergamot вне форума Ответить с цитированием
Старый 31.01.2016, 16:41   #2
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Ответ на вопрос будет краток - у вас в запросе отсутствует сортировка.
Остальное смотреть лень.
Akeloya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каждый час рандомно прибавлять к числу и выводить на экран vnaumenko JavaScript, Ajax 1 16.07.2012 21:16
Взятие файла из папки рандомно ramzes777 Мультимедиа в Delphi 3 29.09.2011 13:54
как заполнить массив рандомно ronny137 Помощь студентам 9 02.05.2010 21:25
Перезагружается система.. рандомно Ромио Операционные системы общие вопросы 6 23.08.2009 00:35
Рандомно заполнить столбец( gred БД в Delphi 1 15.06.2009 10:00