2015-09-01 1 views
1

Je création d'une application Question & Réponses dans C#WinForms où il y aura quatre réponses à chaque question sur laquelle l'utilisateur aura une sélection et continuer.Ms-Access Fonctions à comparer dans Condition de clause Where pour deux mémo RichText column || RichTextBox.Rtf donne différentes balises rtf

Disons: J'ai deux tables avec des colonnes différentes. Database est Ms-Access 2010

Table1(userId,questionId,selectedAnswer) 
Table2(questionId,question,correctAnswer,marks,opt1,opt2,opt3) 

colonnes Table1 et Table2 sont memo(RichText) datatype pour stocker les questions et les réponses sauf QuestionID, userId. J'ai sélectionné RichText au lieu de PlainText parce que Quest. & Réponses inclus différents mathématiques symboles qui ne sont pas pris en charge par PlainText dataype et contrôle dans la zone de texte VisualStudio.

Ainsi, tout en créant quête & réponses et l'affichage pour la sélection aux utilisateurs, je l'ai utilisé RichTextBox contrôle et insérer du contenu dans db pour création question pour Tableau2 et pour le selectedAnswer pour Tableau 1 en utilisant

propriété richTextBox.Rtf via OleDbCommand par ameters.

Et pour obtenir le total des points, j'ai utilisé la requête suivante.

SELECT t1.userId,SUM(marks) As TotalMarks FROM TABLE1 as t1 INNER JOIN TABLE2 as t2 ON t1.questionId=t2.questionId WHERE t1.selectedAnswer=t2.correctAnswer GROUP BY t1.userId

Cette requête a bien fonctionné pour le memo(PlainText) et l'utilisation TextBox datatype contrôle VS, mais pas pour memo(RichText). Parce que parfois RichTextBox.Rtf donne une valeur qui

commence comme {\rtf1\ansi\ et parfois commence {\rtf1\fbidis\ansi\ aime le même contenu dans RichTextbox

Ainsi, le correctAnswer et selectedAnswer champ dans db obtenir différents rtf valeur/tags pour le sam Le contenu

Ceci est un problème que nous devons comparer dans la clause WHERE dans la requête ci-dessus where t1.selectedAnswer=t2.correctAnswer

So.

  1. Y at-il une fonction ms accès qui donnera seulement le contenu réel de la valeur de rtf. Tels que Année fonction qui donnent seulement le année parties. Donc, nous pouvons utiliser sth. comme function(t1.selectedAnswer)=function(t2.correctAnswer) dans la requête ci-dessus.
  2. Ou est-il préférable de créer une autre note de service (Plaintext) colonne pour la note correspondante (RichText) colonne afin que nous puissions comparer deux champs Plaintext dans la clause where qui fonctionnera bien.
  3. Ou le processus que je fais n'est pas fiable et il y a une meilleure façon de l'accomplir.

Toute suggestion sera grandement appréciée. Je vous remercie!

+0

Votre 'RichTextBox' ne dispose-t-il pas d'une propriété' Text' pour exactement cela ...? – Gustav

+0

@Gustav: La propriété 'Text' ne donne que _text_ et ne supporte pas _rich text_ tels que les symboles mathématiques et autres etc. Et cette application doit supporter richText pour _Questions et Answers_. J'ai trouvé une solution en créant 'memoPlainText datatype' pour la colonne memoRichText_ correspondante requise, mais je pense que ce n'est pas _dependable_ + _dataRedundancy_ dans db aussi. – Tops

+0

Oh, vous devez donc comparer les formules. J'ai manqué ça. – Gustav

Répondre

0

une meilleure façon de l'accomplir

Vous pourriez éviter les tracas de comparer le texte RTF en stockant les réponses dans un tableau distinct avec un identifiant numérique (clé primaire), quelque chose comme

AnswerID QuestionID CorrectAnswer AnswerText 
-------- ---------- ------------- ----------------------- 
     1   1 No    Answer 1 for Question 1 
     2   1 No    Answer 2 for Question 1 
     3   1 Yes   Answer 3 for Question 1 
     4   1 No    Answer 4 for Question 1 
     5   2 No    Answer 1 for Question 2 
     6   2 Yes   Answer 2 for Question 2 
     7   2 No    Answer 3 for Question 2 
     8   2 No    Answer 4 for Question 2 

Ensuite, vous pouvez simplement stocker l'ID numérique de la réponse (au lieu du texte de réponse) pour chaque [répondant + question].

+0

Merci de votre suggestion. J'ai déjà obtenu une solution en ajoutant une colonne de texte supplémentaire, mais ce n'est pas le meilleur. Pour ma suggestion, pour moi, il serait difficile de créer une autre table et de rejoindre et de manipuler ces tables. Mais pouvez-vous fournir une conception simple db pour votre suggestion liée à l'application ci-dessus ... – Tops