1

약 30 개의 질문이 포함 된 Access Database가 있습니다. 데이터베이스는 3 개의 테이블로 나뉩니다. 질문, 가능한 답변 및 답변. 질문에 2 ~ 5 가지 가능한 대답이 있습니다. 데이터베이스에서 무작위로 10 개의 질문을 선택하여 내 VB 양식에 추가 할 수 있습니까?Access 데이터베이스에서 객관식 질문을 무작위로 선택하는 방법

PS :이 여기이

을하고 나의 처음은 내 코드입니다

Dim provider As String Dim dataFile As String Dim connString As String Public myConnection As OleDbConnection = New OleDbConnection Public dr As OleDbDataReader

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
    dataFile = "C:\Users\Phil\Desktop\Questions.accdb" 
    connString = provider & dataFile 
    myConnection.ConnectionString = connString 
    myConnection.Open() 
    Dim str As String 
    str = "SELECT Top 10 ID_Question From Questions ORDER BY RND(ID_Question)" 
    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) 
    dr = cmd.ExecuteReader 

    While dr.Read() 
     TextBox1.Text = dr("ID_Question").ToString 
    End While 
    myConnection.Close() 
    MsgBox("fsafa") 
End Sub 

텍스트 상자가 변경되지 않고있는 MsgBox가


솔루션을 표시하지 않습니다 관심있는 사람이 있다면 저에게 도움이되었습니다.

SELECT Top 10 ID_Question, Question_Name 
FROM tblQuestions 
ORDER BY RND(-(100000*ID_Question)*Time()) 
+0

'Answer'가 존재할 필요는 없습니다 - 올바른 PossibleAnswer 항목에만 플래그가 있어야합니다. 질문 ID를로드하고 섞은 다음 첫 번째 N 질문을 선택하십시오 – Plutonix

+0

도움이 될 수 있습니다. http://stackoverflow.com/questions/9937222/how-to-get-random-record-from-ms-access-database 하지만 문제는 어디에서 발생합니까 (데이터 가져 오기 또는 데이터 표시). –

+0

당신은 어떤 종류의 관계가 필요합니다. 답변을 드릴/답변을 드릴 수 있습니다 ... 그래서 무작위로 질문을 선택해도 다른 세부 정보를 얻으려면 어떤 종류의 관계가 필요합니다. – Codexer

답변

1

질문에 일련 번호 필드가 있다고 가정해야합니다. 가능한 답변은 해당 일련 번호 필드를 기반으로하는 일대 다 조인이고 해당 대답은 해당 일련 번호 필드를 기반으로하는 일대일 조인입니다 ? 테이블을 연결하는 가장 좋은 방법이 될 것입니다.

SELECT Top 10 Question_ID FROM tblQuestions ORDER BY RND(Question_ID) 

이 당신에게 상위 10 무작위로 선택된 Question_IDs을 주어야한다 (또는 일련 번호 필드가 내가 위에서 대해 언급하는 것이 호출하든) 한 다음 왼쪽 수 있습니다

그렇다면, 이런 식으로 뭔가를 시도 해당 ID를 기반으로 질문/가능한 답변/답변 테이블에 가입하십시오. 질문을 표시하려면 위의 SQL을 기반으로 양식 또는 하위 양식을 채우십시오.

+0

답변 해 주셔서 감사합니다. 나는이 코드를 내 코드에 넣었으나 여전히 옳지 않은 것이있다. 내 질문을 편집했습니다. 내 실수를 볼 수 있는지 알려주세요. – phil652

+0

내 코드에서 OLEDDataReader 대신 SQLDataReader를 사용합니다. 차이가 있는지 확실하지 않습니다. 그런 다음, "if (dr.HasRows)"를 사용하여 내 독자가 실제로 데이터를 가지고 있는지 확인합니다. 거기에서 휴식을 취하고 무슨 일이 일어나고 있는지보십시오. –

+0

그래도 문제가 해결되지 않으면 [여기 제시된 해결책] (http://www.vb-helper.com/howto_net_random_records.html)을 사용해보십시오. –

관련 문제