Frage zu Datenbank-Formularen
-
Hi zusammen,
hab da mal ne Frage zu einem Datenbank-Formular. Ich habe mit BDE ein Formular erstellt, auf dem sich nur BDEdits (halt für Deteilabfragen) befinden. Wie mache ich es, das wenn ich z.B. gerade in dem Feld "Datensatz" bin (der Datensatzt 13 wird angezeigt), das wenn ich dort jetzt die 2 eingebe, er mir den zweiten Datensatzt anzeigt????
Oder besseres Beispiel:
Nehmen wir ein Adressprogramm, wenn ich jetzt in dem Editor-Feld "Vorname" einen belibigen Namen eingebe, soll er mir alle Daten aus diesem Datensatz ausspucken, egal in welchem Datensatz ich mich gerade befinde!
Ich danke im Vorraus!
-
Was ist denn die Datensatznummer? Ist das eine von Dir erstellte Variable, oder meinst Du damit die physikalische Datensatznummer in der Tabelle?
Erster Fall: Im Regelfall verfügt eine DataSource über die Methode Locate. Damit sollte sich Dein Problem lösen lassen.
Zweiter Fall: Eigenschaft RecNo der DataSource.Allerdings darf das Eingabefeld kein DBEdit sein, sondern ein normales Edit.
-
IDas Form sieht z.B. so aus:
(Die Punkte stehen für die DBEdits):
Datensatz: ...........
Vorname: .............
Name: ................
Geb.Datm: ............Strasse: .............
PLZ: .................
Ort: .................Tel.: ................
Email: ...............Ich möchte jetzt, das die DBEdits >>Datensatz, Vorname und Name<< so funktionieren, das ich über sie einen neue Datensatz eingeben kann (ist ja logisch und kein Problem), aber sie sollen auch so funktionieren, dass wenn ich jetzt zum Beispiel in dem DBEdit den Name "Johannes" eingebe, soll mir der komplette Datensatz angezeigt werden:
Datensatz: .......132
Vorname: ....Johannes
Name: ..........Meier
Geb.Datum: 20-01-1987PLZ: ...........12345
Ort: ......MusterlandTel.:.....0123-123456
Email:....123@123.comAlso spich, wenn ein Datensatz vorhanden ist, bei dem der Vorname Johannes ist, soll er mir diesen komplett anzeigen
-
Hallo
ich verwende immer SQL
daher kann ich dir nur raten
- verzichte auf DBEdit
- verwende normale Edits
- verwende TQuery (SQL)Das ist das erstemal etwas umfangreicher, aber bei Aenderungen
ist so ein System seht flexibel. Wenn man es einmal kapiert hat
ist es schnell sicher flöexibel - einfach besserMfG
Klaus
-
Reloader schrieb:
Ich möchte jetzt, das die DBEdits >>Datensatz, Vorname und Name<< so funktionieren, das ich über sie einen neue Datensatz eingeben kann , aber sie sollen auch so funktionieren, dass wenn ich jetzt zum Beispiel in dem DBEdit den Name "Johannes" eingebe, soll mir der komplette Datensatz angezeigt werden
Dein Programm soll also erraten, ob Du gerade suchen oder eingeben willst? Was passiert denn, wenn zwei Leute denselben Vornamen haben,
was ja gar nich mal so selten ist?
Ich denke, Du solltest wenigstens irgendeinen Schalter einfügen, über den man zwischen suchen und einfügen/ändern wählen kann.
Zum Suchen könntest Du die Filter-Eigenschaft verwenden, oder (vielleicht noch besser) eine SQL-Abfrage generieren (was ja auch
schon vorgeschlagen wurde).Gruß,
Alexander
-
Also wenn ich es jetzt richtig verstanden habe, verwende ich statt BDE einfach "SQL-Connection" und "SQL-Query" und verwende dann statt DBEdits einfach die Standart-Edits? Hast du eventuell n Tip wie ich dann weiter vorgehen muss, um an mein Ziel zu kommen? Mit den normalen Edits kann ich
doch gar nicht auuf die Datenbank zugreifen oder? Jeden falls nicht über den Inspector...@Joe_M:
Die Eigenschaft/Methode "RecNo" bzw. "Locate" sind im Object-Inspector gar nicht vorhanden!?
-
Reloader schrieb:
hab da mal ne Frage zu einem Datenbank-Formular. Ich habe mit BDE ein Formular erstellt
Wie hast Du denn das Formular erstellt? Mit dem Formular-Experten?
Vielleicht kannst Du mal ein bisschen Source-Code zeigen.Reloader schrieb:
Die Eigenschaft/Methode "RecNo" bzw. "Locate" sind im Object-Inspector gar nicht vorhanden!?
Hast Du schon mal in der BCB-Hilfe danach geschaut? Ein Zugriff auf diese Eigenschaft/Methode ist nur zur Laufzeit möglich - und
auch dann nur wirklich sinnvoll. Die Begriffe "published", "public", "protected" und "private" sagen Dir etwas?Reloader schrieb:
verwende ich statt BDE einfach "SQL-Connection" und "SQL-Query"
Was verstehst Du eigentlich unter "BDE", "SQL-Connection" und "SQL-Query"? Ersteres ist mir als Borland Database Engine bekannt, aber
ich habe mit Hilfe der BDE noch nie Formulare erstellt (ich wusste gar nicht, dass das überhaupt geht).Gruß,
Alexander
-
Also unter "BDE" verstehe ich auch "Borland-Datbase-Engine". Ich beschreibe dir in kurzen Schritten wie ich das Formular erstellt habe:
1. Ich habe ein neues Projekt erstellt, also habe ich ja auch ein MainForm.
2. Habe ich mit Access eine Datenbank erstellt
3. Habe ich dann mit "DataSource" und "BDETable" meine Access-Datenbank in das Projekt eingebunden.
4. Habe ich dann halt DBEdits auf dem Formular gemacht. Da kann ich dann im Objekt-Inspector für jedes DBEdit eine Datenbank auswählen. Wenn ich das gemacht habe, kann ich dem DBEdit ein Datenfeld zuweisen. Über den DBNavigator kann ich ja dann in der Datenbank blättern (vor/zurück/neu/löschen/...). Genau das möchte ich nicht, ich will im Prinzip den DBNavigator weglassen, also ein weiteres Feld einbinden, z.B. das Feld "Suchen". Wenn ich jetzt in diesem Feld "Suchen" einen Namen eingebe, soll das Programm die komplette Datenbank absuchen, ist ein Eintrag vorhanden, soll mir dieser also komplett angezeigt werden:Wenn ich das Prog starte, sollen alle Felder leer sein:
Suche: [...........]
Name : [..................]
Vorname: [..................]
PLZ : [..............]
Ort : [..............]
Str.: [..............]Jetzt soll das Prog die komplette Datenbank nach dem Eintrag "Muster" absuchen:
Suche: [Muster......]
Name : [..................]
Vorname: [..................]
PLZ : [..............]
Ort : [..............]
Str.: [..............]Ist der Eintag "Muster" vorhanden, soll er angezeigt werden:
Suche: [...............]
Name : [Muster...........]
Vorname: [Mustermann........]
PLZ : [12345.........]
Ort : [GibtKeinen....]
Str.: [MusterStr.14b.]Wobei die Platzhalter "[.....]" jetzt für die DBEdits stehen.
Ich muss dabei sagen, das ich noch nicht lange Progge, und deshalb arbeite ich noch viel mit dem Obejekt Inspector, schreibe also kaum code selber.
Hoffe ist einigermaßen nachvollziehbar...
-
Du hast also eine TTable-Komponente verwendet. Diese hat, wie Du selbst in der BCB-Hilfe nachschauen kannst, die schon zuvor erwähnte
Eigenschaft "Filter". Die könntest Du meines Erachtens für Deine Zwecke verwenden. Bei der Gelegenheit solltest Du Dir auch mal die
Eigenschaft "Filtered" anschauen.
Lege einfach noch ein TEdit auf Dein Formular und weise diesem TEdit eine Ereignisbehandlungsmethode für das KeyDown-Ereignis zu.
Darin passt Du jeweils einfach die Filter-Eigenschaft an.
Empfehlenswert wäre es aber auf jeden Fall, wenn Du Dich (sofern noch nicht geschehen) ein wenig mit SQL beschäftigen würdest.
Die auch schon erwähnte TQuery-Komponente könntest Du ebenfalls für Deine Zwecke verwenden. Dieser kannst Du eine eigene Abfrage zu-
weisen, in der Du dann auch viel kompliziertere Filter (<=> WHERE-Bedingung) verwenden kannst.Gruß,
Alexander
-
Ok dann werde ich mal ein wenig rum experimentieren...
In der Hilfe kann ich bei mir leider nicht nach schauen, da mir der C++ Builder immer komplett abschmiert wenn ich die Hilfe öffne. Kennst du vielleicht n paar gute Tutorials, die mir weiter helfen können?
-
Also das mit der Hilfe dürfte eigentlich kein Problem sein...
Geh im explorer einfach unter /Help und öffne bcb.hlpmfg,
chris90
-
Reloader schrieb:
Kennst du vielleicht n paar gute Tutorials, die mir weiter helfen können?
Ja, in der Hilfe gibt es einiges

Du solltest wirklich versuchen, die Hilfe wieder flott zu bekommen. Die BCB-Hilfe ist immer mein erste Anlaufstelle.
Außerdem findest Du im BCB-Verzeichnis unter Examples einige Beispiele (wie der Name ja schon sagt).Gruß,
Alexander
-
Hallo
BDE ist nicht sehr zu empfehlen (besser mittels ADO) aber wenn du nur fuer dich programmierst ...
Zugriff auf Tabellen (einer DB) bekommst du ueber TTable oder TQuery
giob mal TQuery ein und schau dir die Hilfe zu TQuery an
MfG
Klaus
-
Morgen...
Also in der Hilfe habe ich jetzt mal intensiv nachgeschaut, aber leider ohne wirklichen erfolg. Die Hilfe behandelt nur LookUp-ComboBoxen, nur wollte ich das ganze ja eben nicht mit ner KomboBox lösen. Habe mal ein bischen rum probiert, aber leider ohne Erfolg...

-
Hallo
bei mir steht unter Hilfe zu TQuery nichts ueber LookUp-ComboBoxen
TQuery eingeben und markieren
F1-Taste druecken
Eigenschaften anwaehlen
zb SQL anwaehlen -> Beispieleschau auch mal nach dem Unterschied zwischen Open und ExecSQL (sehr haeufiger Fehler)
oder schaumal unter FAQ in den Bereich Datenbanken
MfG
Klaus