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-1987

    PLZ: ...........12345
    Ort: ......Musterland

    Tel.:.....0123-123456
    Email:....123@123.com

    Also spich, wenn ein Datensatz vorhanden ist, bei dem der Vorname Johannes ist, soll er mir diesen komplett anzeigen


  • Mod

    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 besser

    MfG
    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



  • @KlausB:

    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.hlp

    mfg,
    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


  • Mod

    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... 😞


  • Mod

    Hallo

    bei mir steht unter Hilfe zu TQuery nichts ueber LookUp-ComboBoxen

    TQuery eingeben und markieren
    F1-Taste druecken
    Eigenschaften anwaehlen
    zb SQL anwaehlen -> Beispiele

    schau auch mal nach dem Unterschied zwischen Open und ExecSQL (sehr haeufiger Fehler)

    oder schaumal unter FAQ in den Bereich Datenbanken

    MfG
    Klaus


Anmelden zum Antworten