Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access 2003: Suchformular





Frage

gleich vorneweg: ich bin keni access-pro, also würds mich freuen wenn ihr halbwegs verständliche lösungswege für mich finden würdet *g* ich habe in meiner datenbank 3 suchfelder die alle unabhängig voneinander suchen. das suchen funktioniert auch einwandfrei, nur: wenn ich den datensatz gefunden habe kann ich bei den feldern wo vorher noch nichts eingetragen wurde nichts eintragen! (ich hoffe ich drücke mich verständlich aus *g*) jedenfalls steht bei den feldern wo noch nichts eingetragen wurde nach dem suchen "#Name?" und ich kann daran auch nichts ändern, also nichts anderes eintragen! hier noch der code (der nicht von mir erstellt wurde): Private Sub tbxName_AfterUpdate() If Len(Me.tbxName) > 0 Then Me.UF_Stammdaten.Form.RecordSource = GET_SQL_String(1, Me.tbxName) End If wie kann ich diesen fehler umgehen? Me.Refresh End Sub

Antwort 1 von digitalyzer

sorry, da is mir wohl ein kleines missgeschick passiert ;)

Me.Refresh
End Sub

gehören natürlich noch zum code dazu *g*

Antwort 2 von molluskel101

Der Fehler scheint in der Funktion GET_SQL_String() zu liegen.
Der Quellcode dieser Funktion könnte hilfreich sein.

Antwort 3 von digitalyzer

also ich kann mich ja täuschen aber ist das nicht ein standardbefehl in vb wie z.b. "cout" im c++??

ich find jedenfalls keine funktion "GET_SQL_String()"

aber wie gesagt, ich kann mich auch täuschen :) die tatsache das ich den bestehenden quellcode nicht gechrieben habe erschwert die sache natürlich etwas *g*

Antwort 4 von molluskel101

Also in VB gibt es - meines Wissens nach - keine Funktion die GET_SQL_String() heißt.
Das klingt stark nach ner Eigenbau-Funktion.

Antwort 5 von Teddy7

Es ist halt immer schwierig mit Code zu arbeiten, den man gar nicht versteht.
Die Funktion ist mit Sicherheit kein Access-Standard.
Wahrscheinlich findest Du sie in einem Modul der Datenbank, wo Du den Code "gek(l)auft" hast.
Gruß
Teddy

Antwort 6 von digitalyzer

ja ihr habt recht... ob er geklaut wurde weiß ich nicht *g* jedenfalls, hier ist er:

Option Compare Database

´SQL String suchen nach
Public Function GET_SQL_String(index As Integer, text As String) As String
Dim strHilf As String
Dim zahl As Integer


Select Case index
Case 1
strHilf = "´" & text & "*´"

text = "´" & text & "´"

GET_SQL_String = "SELECT ID, Anrede, Name, Anschlussdose_nr, Datum, Länge, Kabeltyp, Telefonnummer, Switch, Port, Anschluß, verteiler " & _
"FROM T_Stammdaten " & _
"WHERE Name Like " & strHilf & " OR Name =" & text & ";"
Case 2

zahl = text
GET_SQL_String = "SELECT ID, Anrede, Name, Anschlussdose_nr, Datum, Länge, Kabeltyp, Telefonnummer, Switch, Port, Anschluß, verteiler " & _
"FROM T_Stammdaten " & _
"WHERE T_Stammdaten.Telefonnummer =" & zahl & ";"
Case 3
text = "´" & text & "´"
GET_SQL_String = "SELECT ID, Anrede, Name, Anschlussdose_nr, Datum, Länge, Kabeltyp, Telefonnummer, Switch, Port, Anschluß, verteiler " & _
"FROM T_Stammdaten " & _
"WHERE kabeltyp =" & text & ";"
Case 4
strHilf = "´" & text & "*´"
text = "´" & text & "´"

GET_SQL_String = "SELECT ID, Anrede, Name, Anschlussdose_nr, Datum, Länge, Kabeltyp, Telefonnummer, Switch, Port, Anschluß, verteiler " & _
"FROM T_Stammdaten " & _
"WHERE Anschlussdose_nr Like " & strHilf & " OR Anschlussdose_nr =" & text & ";"
End Select




End Function

Antwort 7 von Teddy7

Also ich sehe an dem select keine Fehler - außer vielleicht, daß es überflüssig ist auf like text* und zusätzlich auf = text abzufragen und daß man kein Feld NAME nennen soll, weil das eine reservierte Access-Bezeichnung ist.
Zurück zum Problem:
In welche Felder kannst Du nichts eintragen ?
In die Suchfelder, oder in Felder des angezeigten Datensatzes ?
Wenn letzteres - wie und wo werden die Daten angezeigt ?
Gruß
Teddy

Antwort 8 von digitalyzer

die datensätze werden in einem unterformular angezeigt. und in den feldern in denen noch nichts eingetragen wurde kann nach dem suchen auch nichts mehr eingetragen werden, weil, wie schon erwähnt, das feld nach dem suchen den wert "#Name?" enthält

Antwort 9 von Teddy7

Das muß am Unterformular liegen. Schau Dir mal die Felddefinitionen an. Eingabeschablonen oder Wertprüfungen können Ärger machen. Vielleicht stimmen auch die Namen der gebundenen Felder nicht. Ist das Formular so eingestellt, daß eine Datenänderung erlaubt ist ? Prüf mal die Verknüpfung zum Hauptformular - auch da könnte was falsch sein.

Gruß
Teddy

Antwort 10 von digitalyzer

ja das formular ist so eingestellt das eine datenänderung möglich ist! genau darauf kommts mir ja an! ich will nach dem suchen direkt im unterformular etwas ändern bzw. hinzufügen können!