# Fragebogen



## nordi (3. September 2002)

Hi leute,

ich wollte fragen, ob jemand von euch eine Seite kennt, wo beschrieben wird, wie man einen Fragebogen codet!? Ich wollte im Prinzip so einen Fragebogen coden, wo man 'JA' und 'NEIN' ankreuzen kann und dann das Ergebnis ausgewertet wird...sollte doch eigentlich nicht schwierig sein, oder?

danke schonmal im vorraus

greets aus köln

Marius


----------



## Dario Linsky (3. September 2002)

eine seite kenn ich zwar gerade nicht, aber ich hab sowas schon gemacht. als erstes stellt sich natürlich die frage, wieviele optionen der benutzer auswählen kann. wenn es immer nur um ja oder nein geht, kann man das ganze mit checkboxen machen. wenn es mehrere optionen gibt, kann man das entweder mit radiobuttons machen oder platzsparender mit einer combobox.
für das speichern der ausgewählten daten kannst du eine datenbank nehmen. die auswertung selbst kann man nachher mit spss machen, aber da stellt sich die frage, ob sich die investition von 3000 euro in ein statistik-programm dafür lohnt.


----------



## nordi (4. September 2002)

Mh - ok - hab gerade erst mit dem coden von VB angefangen und das, was du mir gesagt hast, sagt mir nicht viel...

aber trotzdem danke

marius

ps: 3000 € ?? So ein Schmarn


----------



## Dario Linsky (4. September 2002)

eigentlich brauchst du auch gar nicht so besonders viel code dafür. der grösste teil dabei ist die datenbank. 

für den einstieg reicht es, wenn du erstmal access als datenbanksystem nimmst und dir das einsteiger-tutorial über datenbanken und sql von quentin durchliest.

wenn du das komplett durchgelesen hast, legst du eine neue datenbank in C:\test\test.mdb an und erstellst eine tabelle für deine daten mit vier feldern:

- id: autowert, primärschlüssel
- name: text
- email: ja/nein
- land: zahl

die tabelle speicherst du unter dem namen test ab und dann erstellst du noch eine tabelle mit zwei feldern:

- id: zahl, primärschlüssel
- land: text

die zweite tabelle speicherst du als lu_land ab und trägst folgende daten ein:

1 - deutschland
2 - österreich
3 - schweiz
4 - sonstige

jetzt ist die datenbank im prinzip fertig, und der programmierteil fängt an. auf dein formular legst du einfach einen commandbutton (btnSchreiben), eine combobox (cmbLand), eine textbox (txtName) und eine checkbox (chkEmail).
in die ereignisprozeduren der beiden buttons schreibst du dann noch folgenden code:

```
Option Explicit

Dim cnData As ADODB.Connection

Private Sub btnSchreiben_Click()
Dim rsTest As ADODB.Recordset

'Neuen Datensatz für die zusammengeklickten Daten anlegen
Set rsTest = New ADODB.Recordset
rsTest.Open "SELECT * FROM test;", cnData, adOpenStatic, adLockPessimistic, -1
If rsTest.RecordCount > 0 Then rsTest.MoveLast
rsTest.AddNew

'Daten in die Tabelle eintragen
rsTest("name") = txtName.Text
rsTest("email") = chkEmail.Value
rsTest("land") = cmbLand.ListIndex + 1
rsTest.Update

rsTest.Close
Set rsTest = Nothing

End Sub

Private Sub Form_Load()
Dim rsLand As ADODB.Recordset

Set cnData = New ADODB.Connection
cnData.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\test.mdb", "", "", -1

'alle verfügbaren Länder aus der Tabelle in die Combobox laden
Set rsLand = New ADODB.Recordset
rsLand.Open "SELECT * FROM lu_land;", cnData, adOpenStatic, adLockPessimistic, -1
If rsLand.RecordCount > 0 Then
    rsLand.MoveFirst
    Do While Not rsLand.EOF
        cmbLand.AddItem CStr(rsLand("land"))
    Loop
End If
rsLand.Close
Set rsLand = Nothing

End Sub
```

noch zu beachten wäre, dass du einen verweis auf die adodb-libraries (microsoft activex data objects 2.x) setzt. die auswertung kannst du dann später auch mit sql machen, indem du einfach gruppierungen abfragst.
und die autowerte solltest du nachher auch nicht mehr benutzen, weil man damit später probleme haben wird. ich hab das der einfachheit halber mal hier verwendet.


----------



## nordi (4. September 2002)

Vielleicht kennt das ja einer....ich hatte zum Glück noch keine erfahrungen dabei...=) Wenn man bei einer Bank einen Credit aufnehmen will, dann muss man dem Bankangestellten einen Fragebogen ausfüllen. So sollte das aussehen =)

aber danke für den quelltext!! Ich werd auf jeden fall davon profitieren.

Marius


----------



## Dario Linsky (4. September 2002)

die oberflächengestaltung kannst du ja so gestalten, wie du das möchtest. und wenn du ein fenster brauchst, das so aussieht wie ein fragebogen, dann klick dir das halt einfach zusammen. 
für kästchen zum ankreuzen nimmst du halt checkboxen, für felder für texteingaben nimmst du textboxen. und so weiter. der code hat ja nichts damit zu tun, wie das formular aufgebaut ist.


----------



## nordi (4. September 2002)

Sorry, bin erst Anfänger mit VB....
Ich versteh das aber nicht ganz mit den Tabellen in der Datenbank. Wofür brauche ich die Länder usw ?

danke im vorraus

marius


----------



## Dario Linsky (4. September 2002)

warum und wie man auf eine datenbank zugreift, sollte aus quentins tutorial hervorgehen. ansonsten hier nochmal die kurzfassung:
in datenbanken werden - wie der name schon sagt - daten gespeichert. der vorteil einer datenbank gegenüber einer textdatei ist der, dass die daten gezielt abgefragt werden können. 
die daten werden in einer tabellenstruktur angeordnet und damit ist prinzipiell jeder wert in der datenbank eindeutig ansteuerbar. damit man auf einen bestimmten wert oder eine reihe von werten zugreifen kann, gibt's einen standard, der in fast jedem datenbanksystem verwendet wird: sql. damit kann man eindeutige mengen von daten aus den tabellen abfragen und noch einiges mehr.
nebenbei kann man mit sql sogar eine sogenannte dump-datei erzeugen, in der die komplette datenbank nur mit sql-anweisungen beschrieben wird.

und damit die daten möglichst kompakt gespeichert werden und bei der eingabe fehler vermieden werden gibt es fünf verschiedene normalformen. damit redundanzen (überflüssige wiederholungen) in der datenbank vermieden werden, sollte man eine datenbank auf jeden fall mindestens in der zweiten normalform (eigentlich besser die dritte) aufbauen.
damit z.b. nicht in jeder zeile der tabelle das land voll ausgeschrieben ist, und sich damit wiederholen würde, erstellt man eine "look-up"-tabelle, in der ein land einem zahlenwert zugeordnet ist. und statt des ganzen wortes speichert man in der datentabelle einfach nur die zugeordnete zahl.
die erklärung der normalformen wäre wohl etwas zu viel, aber es reicht erstmal zu wissen, dass man damit fehler und überflüssige werte vermeiden kann.

und damit das programm relativ flexibel bleibt, greift es auf die look-up-tabelle zurück, damit man später auch mal die werte ändern kann, oder den programmcode zu ändern.


----------

