Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: тестовая оболочка Добавлено: 12.09.10 20:43  

Автор вопроса:  Pavel
Цель: Создание тестовой оболочки.
Прежде всего, тестируемый должен ввести свой логин в TextBox1, и нажав Button1 вписать
себя в базу данных. Для этого предполагается создать таблицу "data" и поле "members" в нем для списка тестируемых.
Эти таблица и поле создаются в уже существующем файле (.accdb)
В другой таблице "variables" в поле "vars", этого же файла, записаны вопросы для тестирования.
Предполагается читать эти вопросы по очереди и выводить их на Label1.
ДАлее, с помощью инструментов - RadioButtons оценивать эти вопросы и по каждому нажатию Form2.Button1,
отправлять эти данные в таблицу "data".

Задам пока самые важные вопросы:
1. Возможно ли чтобы, в зависимости от изначального количества вопросов в таблице "variables"
было программно создано такое же количество полей-вопросов в таблице данных ("data") Или количество полей
должно быть жестко статично (задано заранее)?
Это бы значительно упростило использование программы.
2. Как читать вопросы в Label1 не все сразу, а построчно - Label1.Text = myReader.GetString(0)???
3. И совсем мало представления как нужно прописать код для RadioButtons, чтобы потом по запросу записывать
данные в базу.

http://www.megaupload.com/?d=5A3TKE8I - здесь весь проект


Imports System.Data.OleDb
Imports System.Windows.Forms
Imports System.IO


Public Class Form2
    Friend TextBox1 = Form1.TextBox1

    Dim n As Integer
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = Nothing
        RadioButton1.Text = "1" : RadioButton2.Text = "2" : RadioButton3.Text = "3" : RadioButton4.Text = "4"
        RadioButton5.Text = "5" : RadioButton6.Text = "6" : RadioButton7.Text = "7"
        Button1.Text = "Далее"

        Dim con As New OleDb.OleDbConnection
        con.ConnectionString = "Provider=Microsoft.ACE.OleDb.12.0; Data Source=C:\DB_organon.accdb"
        con.Open()
        If con.State <> ConnectionState.Open Then MessageBox.Show("Not connected")
        Dim quer As String = "SELECT variables.vars FROM variables"
        Dim myCommand As New OleDb.OleDbCommand(quer, con)
        Dim myReader As OleDb.OleDbDataReader = myCommand.ExecuteReader()

        While myReader.Read()
            Label1.Text = myReader.GetString(0)
        End While
        n = 0

    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0; Data Source=C:\DB_organon.accdb")
        con.Open()
        Dim quer As String = "SELECT variables.vars FROM variables"
        Dim myCommand As New OleDb.OleDbCommand(quer, con)
        Dim myReader As OleDbDataReader = myCommand.ExecuteReader()
        While myReader.Read()
            Label1.Text = myReader.GetString(0)
        End While
        n = 0

        If RadioButton1.Checked = True Then
            Label1.Text = myReader.GetString(0)
            Dim myCommand2 As New OleDbCommand("ALTER TABLE Data add column (...), con")
            n = n + 1

            If myReader Is Nothing Then
                MessageBox.Show("Тестирование окончено")
                Me.Close()
            End If
        End If

    End Sub
End Class

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 12.09.10 21:18
Если ты уже работаешь с .NET, что мешает взять SQL Server CE и LinQ 2 SQL?

Ответить

Номер ответа: 2
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #2 Добавлено: 12.09.10 21:57
Вижу просто неверное проектирование базы.
Для чего ALTER TABLE? Динамически добавлять поля, чтобы сохранить результат выбора OptionButton? И где - в таблице со списком пользователей!
Это никуда не годится.
Нужна сводная таблица всего с тремя полями idMember (пользователь), idQwest (вопрос), intAnswer (id of OptionButton).
И пиши в нее INSERT INTO..
Мол, пользователь с таким-то уникальным ключем idMember на вопрос с номером idQwest ответил следующее: intAnswer.

Ответить

Номер ответа: 3
Автор ответа:
 Pavel



Вопросов: 1
Ответов: 1
 Профиль | | #3 Добавлено: 23.09.10 17:24
Так в том и дело, что не в курсе как записывать в БД - INSERT INTO (...с таким-то уникальным ключем idMember на вопрос с номером idQwest ответил следующее: intAnswer)

Ответить

Номер ответа: 4
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #4 Добавлено: 24.09.10 18:44

  1. Dim cmd As New OleDb.OleDbCommand
  2.         cmd.Connection = con
  3.         cmd.CommandText = "INSERT INTO [MYTABLE] (MEMBER,QWEST,ANSWER) VALUES(?,?,?)"
  4.         cmd.Parameters.Add("p1", OleDb.OleDbType.Integer).Value = idMember
  5.         cmd.Parameters.Add("p2", OleDb.OleDbType.Integer).Value = idQwest
  6.         cmd.Parameters.Add("p3", OleDb.OleDbType.Integer).Value = intAnswer
  7.         cmd.Execute...'Scalar

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам