Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Query aus DBEdit-Fledern bauen... (https://www.delphipraxis.net/106005-query-aus-dbedit-fledern-bauen.html)

eXpli 3. Jan 2008 19:56

Datenbank: Access • Version: *.mdb • Zugriff über: ADO

Query aus DBEdit-Fledern bauen...
 
Hallo zusammen!

Ich habe 2 TDBEdit-Felder und möchte die wörter, welche dort eingetragen werden, über ein Query in die DB schreiben (via Buttonclick). ADO-Connection ist bereits erstellt. Aber ich bekomme das irgendwie nicht gebacken!

Hier mein Versuch:

Delphi-Quellcode:
procedure TvocabEingabe.Button1Click(Sender: TObject);
begin
 QRY_InsertVocab.SQL.Add(INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ('+Vok_Deutsch2+', '+Vok_Englisch2+')');
end;

MFG eXpli

grenzgaenger 3. Jan 2008 20:01

Re: Query aus DBEdit-Fledern bauen...
 
Zitat:

Zitat von eXpli
Hallo zusammen!

Ich habe 2 TDBEdit-Felder und möchte die wörter, welche dort eingetragen werden, über ein Query in die DB schreiben (via Buttonclick). ADO-Connection ist bereits erstellt. Aber ich bekomme das irgendwie nicht gebacken!

Hier mein Versuch:

Delphi-Quellcode:
procedure TvocabEingabe.Button1Click(Sender: TObject);
begin
 QRY_InsertVocab.SQL.Add(INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ('+Vok_Deutsch2+', '+Vok_Englisch2+')');
end;

MFG eXpli

das muss in etwa so aussehen (je nach kompo. kann es abweichungen geben)
Delphi-Quellcode:
[pre]
procedure TvocabEingabe.Button1Click(Sender: TObject);
begin
 QRY_InsertVocab.SQL.Add('INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ('+quotedstr(Vok_Deutsch2.text)+', '+quotedstr(Vok_Englisch2.text)+');');
end;
[/pre]

mkinzler 3. Jan 2008 20:02

Re: Query aus DBEdit-Fledern bauen...
 
Delphi-Quellcode:
QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ( :Vok_Deutsch2, Vok_Englisch2);';
...
QRY_InsertVocab.ParamByName( 'Vok_Deutsch2').Value := Vok_Deutsch2;
QRY_InsertVocab.ParamByName( 'Vok_Englisch2').Value := Vok_Englisch2;
QRY_InsertVocab.ExecSQl;
[Edit: Tippfehler entfernt]

grenzgaenger 3. Jan 2008 20:14

Re: Query aus DBEdit-Fledern bauen...
 
sollte doch so heissen:

Zitat:

Zitat von mkinzler
Delphi-Quellcode:
QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ( :Vok_Deutsch2, Vok_Englisch2);';
...
QRY_InsertVocab.ParamByName( 'Vok_Deutsch2').Value := Vok_Deutsch2.text;
QRY_InsertVocab.ParamByName( 'Vok_Englisch2').Value := Vok_Englisch2.text;
QRY_InsertVocab.ExexSQl;

der pointer bringt wohl nicht so viel, ausser hier liegt 'ne standardeigentschaft bei... sonst auch mit parametern ok.

mkinzler 3. Jan 2008 20:17

Re: Query aus DBEdit-Fledern bauen...
 
Zitat:

sollte doch so heissen:...
Je nach dem ob es Strings oder Edit-Kompos o.ä. sind

eXpli 3. Jan 2008 20:26

Re: Query aus DBEdit-Fledern bauen...
 
Muss ich jetzt den:

Delphi-Quellcode:
QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ( :Vok_Deutsch2, Vok_Englisch2);';
oder den Code nehmen?:
Delphi-Quellcode:
QRY_InsertVocab.ParamByName( 'Vok_Deutsch2').Value := Vok_Deutsch2.text;
QRY_InsertVocab.ParamByName( 'Vok_Englisch2').Value := Vok_Englisch2.text;
QRY_InsertVocab.ExexSQl;
Habe bisher nur ADO-Connection und die QRY komponenten im einsatz... Brauch ich noch andere kompos dafür?

mkinzler 3. Jan 2008 20:29

Re: Query aus DBEdit-Fledern bauen...
 
Beides. Oben setzt du die Abfrage mit Parametern.
Im unteren Teil setzt du die Parameter und fühsrt die Abfrage mit deren Werten aus.

raiguen 3. Jan 2008 22:16

Re: Query aus DBEdit-Fledern bauen...
 
ähm... nur so am Rande:
SQL-Code:
QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ( :Vok_Deutsch2, :Vok_Englisch2);';
sieht irgendwie besser aus ;) nicht, dass sich jmd wundert, dass der 2.Parameter nicht gefunden wurde/wird/unbekannt ist :wink: also nix für ungut @mkinzler... is sicher 'n kleiner Flüchtigkeitsfehler ... kann ja jedem mal unterlaufen, gell?

Die Muhkuh 3. Jan 2008 22:18

Re: Query aus DBEdit-Fledern bauen...
 
Und dann bitte noch ExecSQL und nicht ExexSQL ;-)

eXpli 4. Jan 2008 13:22

Re: Query aus DBEdit-Fledern bauen...
 
Ist's eigentlich egal, ob ich die Werte über DBEdit oder normale Edit-Boxen reingeb?

mkinzler 4. Jan 2008 13:46

Re: Query aus DBEdit-Fledern bauen...
 
Grundsätzlich ja. Im 2. Fall musst du dich aber selber um das Einfügen in die DB kümmer

eXpli 4. Jan 2008 15:24

Re: Query aus DBEdit-Fledern bauen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm irgendwie will das nicht funtionieren :(.

So hab ich das jetzt:
Delphi-Quellcode:
ADOConnection1.Connected := true;
QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ( :Vok_Deutsch, :Vok_Englisch);';
QRY_InsertVocab.ExecSQL;
ADOConnection1.Connected := false;
Hier der ConnectionString:
Delphi-Quellcode:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Vokabeln.mdb;Persist Security Info=False
Hier als was die DBEditBoxen definiert:
Delphi-Quellcode:
Vok_Deutsch: TDBEdit;
Vok_Englisch: TDBEdit;
Fehlen mir vllt. noch andere kompos oder so? Hmm hier mal nen screeny vllt. fällt euch was ein wie ihr das machen würdet...

mkinzler 4. Jan 2008 15:32

Re: Query aus DBEdit-Fledern bauen...
 
Diese Zeile kannst du woanders setzen, da sie nur einmal nötig ist.

Delphi-Quellcode:
QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ( :Vok_Deutsch, :Vok_Englisch);';
Delphi-Quellcode:
ADOConnection1.Connected := true; //Warum?
//Hier die werte in die Parameter schreiben:
QRY_InsertVocab.ParamByName('Vok_Deutsch').Value := Vok_Deutsch.Text;
QRY_InsertVocab.ParamByName('Vok_English').Value := Vok_English.Text;
QRY_InsertVocab.ExecSQL;
ADOConnection1.Connected := false; //Warum?
Jetzt verstehe ich deine letzte Frage: In diesem Fall wäre ein normales Edit sogar besser

eXpli 4. Jan 2008 16:04

Re: Query aus DBEdit-Fledern bauen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm woll immer noch nicht so richtig...

hier mal meinen gesamten Code:
Delphi-Quellcode:

unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, Mask, DBCtrls;

type
  TVocabEingabe = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    Vok_Deutschnn: TDBEdit;
    Vok_Englischnn: TDBEdit;
    ADOConnection1: TADOConnection;
    QRY_InsertVocab: TADOQuery;
    Vok_Deutsch: TEdit;
    Vok_Englisch: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

//  TVokabel = record
//   Vok_Deutsch: string;
//   Vok_Englisch: string;
//  end;

var
  VocabEingabe: TVocabEingabe;

implementation

{$R *.dfm}

procedure TVocabEingabe.Button1Click(Sender: TObject);
begin
// QRY_InsertVocab.SQL.Add('INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES ('+quotedstr(Vok_Deutsch2.Text)+', '+quotedstr(Vok_Englisch2.Text)+');');

//QRY_InsertVocab.Parameters.ParamByName( 'Vok_Deutsch').Value := Vok_Deutsch2.Text;
//QRY_InsertVocab.Parameters.ParamByName( 'Vok_Deutsch').Value := Vok_Deutsch2.Text;
//QRY_InsertVocab.ExecSQL;

QRY_InsertVocab.Parameters.ParamByName('Vok_Deutsch').Value := Vok_Deutsch.Text;
QRY_InsertVocab.Parameters.ParamByName('Vok_Englisch').Value := Vok_Englisch.Text;
QRY_InsertVocab.ExecSQL;

QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES (:Vok_Deutsch, :Vok_Englisch);';

end;

end.
jetzt kommt noch ne Fehlermeldung - siehe Anhang:

was muss ich denn jetzt verändern wenn ich werte die ich in die DB eintragen will direkt in den code eingebe - bloß um zu sehen ob überhaupt werte eingetragen werden können?

Hier mal infos über meine tabelle:
Tabellenname: TabVokabeln
Spalten: ID_Vokabeln
Vok_Deutsch
Vok_Englisch
Kategorie
Datum

Das kann noch nicht so schwer sein einfach mal daten in eine Tabelle zu bringen... oder? Ich verstehs nich... :(

Jelly 4. Jan 2008 16:11

Re: Query aus DBEdit-Fledern bauen...
 
Du versuchst die Query mit ExecSQL auszuführen, bevor du die Query überhaupt definiert hast. Das kann ja nicht klappen. Probiers mal so:
Delphi-Quellcode:
procedure TVocabEingabe.Button1Click(Sender: TObject);
begin
    QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch) VALUES (:Vok_Deutsch, :Vok_Englisch);';

    QRY_InsertVocab.Parameters.ParamByName('Vok_Deutsch').Value := Vok_Deutsch.Text;
    QRY_InsertVocab.Parameters.ParamByName('Vok_Englisch').Value := Vok_Englisch.Text;
    QRY_InsertVocab.ExecSQL;
end;

eXpli 4. Jan 2008 16:13

Re: Query aus DBEdit-Fledern bauen...
 
rofl... hab ich auch grad gesehen... Klappt jetzt :) DAAAANNNKEEE!!!

Ich behalte mir aber dennoch vor weitere fragen zu stellen :D

[UPDATE]

Ich möchte jetzt noch das datum bzw. die uhrzeit in die DB schreiben.

hier mein versuch:

Delphi-Quellcode:
procedure TVocabEingabe.Button1Click(Sender: TObject);
begin
    QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch, Datum) VALUES (:Vok_Deutsch, :Vok_Englisch, DATETIME);';

    QRY_InsertVocab.Parameters.ParamByName('Vok_Deutsch').Value := Vok_Deutsch.Text;
    QRY_InsertVocab.Parameters.ParamByName('Vok_Englisch').Value := Vok_Englisch.Text;
    QRY_InsertVocab.ExecSQL;
end;
Fehler kommt: Für mindestens ein Parameter wurde kein Wert angegeben...

eXpli 4. Jan 2008 17:28

Re: Query aus DBEdit-Fledern bauen...
 
Ich möchte jetzt noch das datum bzw. die uhrzeit in die DB schreiben.

hier mein versuch:

Delphi-Quellcode:
procedure TVocabEingabe.Button1Click(Sender: TObject);
begin
    QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch, Datum) VALUES (:Vok_Deutsch, :Vok_Englisch, DATETIME);';

    QRY_InsertVocab.Parameters.ParamByName('Vok_Deutsch').Value := Vok_Deutsch.Text;
    QRY_InsertVocab.Parameters.ParamByName('Vok_Englisch').Value := Vok_Englisch.Text;
    QRY_InsertVocab.ExecSQL;
end;
Also einfach Datum mit rangeklemmt...
Fehler kommt: Für mindestens ein Parameter wurde kein Wert angegeben...

mkinzler 4. Jan 2008 17:41

Re: Query aus DBEdit-Fledern bauen...
 
Delphi-Quellcode:
procedure TVocabEingabe.Button1Click(Sender: TObject);
begin
    QRY_InsertVocab.SQL.Text := 'INSERT INTO TabVokabeln (Vok_Deutsch, Vok_Englisch, Datum) VALUES (:Vok_Deutsch, :Vok_Englisch, :Datum);'; //Wie gesagt könnte dies auch statisch gesetzt werden

    QRY_InsertVocab.Parameters.ParamByName('Vok_Deutsch').Value := Vok_Deutsch.Text;
    QRY_InsertVocab.Parameters.ParamByName('Vok_Englisch').Value := Vok_Englisch.Text;
    QRY_InsertVocab.Parameters.ParamByName('Datum').Value := Now; //Oder auch ein anderes Datum/Timestamp
    QRY_InsertVocab.ExecSQL;
end;

kiar 4. Jan 2008 17:43

Re: Query aus DBEdit-Fledern bauen...
 
Moin,

wenn du weiter machst, hast Du am Ende vllt den Code für die Eingabe, diesen aber nicht begriffen.
Ergo, ein bisschen Eigeninitiative, BITTE.

raik

EDIT: Schade, schon passiert

eXpli 4. Jan 2008 20:29

Re: Query aus DBEdit-Fledern bauen...
 
Zitat:

Moin,

wenn du weiter machst, hast Du am Ende vllt den Code für die Eingabe, diesen aber nicht begriffen.
Ergo, ein bisschen Eigeninitiative, BITTE.

raik

EDIT: Schade, schon passiert
Den Code verstehe ich schon... ich habe lang php gescriptet... Mir fällt es nur einfach die syntax für delphi schwer :(




Dennoch DANKE @ mkinzler

eXpli 7. Jan 2008 18:24

Re: Query aus DBEdit-Fledern bauen...
 
Ich nochmal :D,

Hab jetzt die letzten stunden damit verbracht irgendwie ne DBLookupComboBox mit daten aus meiner DB zu füllen... Habe die Datasource und das Feld in Listsource, Listfield und Keyfield mit meinen Daten eingegeben.

Leider kommt immerwieder die Fehlermeldung "Zirkuläre Datenverbindung sind nicht erlaubt."

Die DataSource wird von ner ADODataSet komponente mit Daten gefüttert (mit CommandText).

Habt ihr ne idee wie ich das hinbekomme?

Gruß eXpli

mkinzler 7. Jan 2008 18:27

Re: Query aus DBEdit-Fledern bauen...
 
Du scheinst eine Verknüpfung von DS1 nach DS2 und von DS2 nach DS1 gesetzt zu haben.

eXpli 7. Jan 2008 19:43

Re: Query aus DBEdit-Fledern bauen...
 
Hmm ich weiss garnicht wie man eine verknüpfung zwischen die beiden DS macht :>. Oder ist das auf die Datenbank bezogen?

mkinzler 7. Jan 2008 19:44

Re: Query aus DBEdit-Fledern bauen...
 
Über DataSourcen

haentschman 7. Jan 2008 19:59

Re: Query aus DBEdit-Fledern bauen...
 
Zitat:

Leider kommt immerwieder die Fehlermeldung "Zirkuläre Datenverbindung sind nicht erlaubt."
... ist folgendes:

Du kannst nicht für die DataSource und ListSource das gleiche Dataset verwenden... nicht erlaubt.

2 Möglichkeiten:

1.
TabelleDaten--> DSDaten-->DataSource der ComboBox
TabelleListe--> DSListe-->ListSource der ComboBox ---> Listenanzeige

2. wenn du die Daten der Tabelle in der Lise haben möchtest.
TabelleDaten--> DSDaten-->DataSource der ComboBox
QueryListe-->DSListe-->ListSource der ComboBox ---> Listenanzeige
- QueryListe Öffen
- in AfterPost der TabelleDaten QueryListe neu öffnen sprich aktualisieren


...der Knackpunkt ist der daß du keine Datenverbindung im Kreis haben darfst.
...mit der ReadOnly Query ist der Kreis unterbrochen.

...ums einfach auszudrücken :-D

eXpli 13. Jan 2008 15:59

Re: Query aus DBEdit-Fledern bauen...
 
Hmm irgendwie versteh ich das nicht so ganz. Versteh nicht wie ich die kompos untereinander verbinden soll das es funtioniert :(.

Habe jetzt folgende kompos erstellt:

DBLookupComboBox
- DataField: Kategorie
- DataSource: DataSource1
- KeyField: Kategorie
- ListField: Kategorie
- ListSource: DataSource1

DataSource
- DataSet: ADODataSet

ADODataSet
- CommandText: SELECT Kategorie FROM TabVokabeln
- DataSource: DataSource1


Tabelle in der Datenbank sieht so aus:

TabellenName: TabVokabeln
Felder/Spalten: ID_Vokabeln, Vok_Deutsch, Vok_Englisch, Kategorie, Datum


Ich möchte einfach die Einträge der Spalte Kategorie in der Combobox haben... :(

eXpli 13. Jan 2008 18:16

Re: Query aus DBEdit-Fledern bauen...
 
So... Habs jetzt doch noch hinbekommen :) SAUBER!!

Da ich ne Beziehung in meiner DB habe, kommt jetzt ne Fehlermeldung:

"Unterschiedliche Typen für Feld 'Kategorie'; erwartet: WideString, gefunden: Integer."

Zur Erläuterung noch: Ich habe 2 Tabellen, TabVokabeln und TabKategorie
In TabVokabeln ist 'Kategorie' (Zahl) und in TabKategorie befindet sich 'ID_Kategorie' (Autowert)


Im Quelltext unter type steht folgendes:
Delphi-Quellcode:
ADODataSet1: TADODataSet;
...
ADODataSet1Kategorie: TWideStringField;
...

In was muss ich das denn ändern damit das wieder geht?

PS.: Die Änderung der Tabellenspaltentypen hab ich in der DB grad erst gemacht. Dann kam der fehler.


Gruß eXpli

marabu 13. Jan 2008 18:28

Re: Query aus DBEdit-Fledern bauen...
 
Hallo,

da du den Feldtyp in der Datenbank geändert hast, nachdem du das entsprechende Feld im Feldeditor der Komponente erzeugt hast musst du das Feld nochmal neu erzeugen: Doppelklick auf ADODataSet1 und das Feld löschen und neu aufnehmen - müsste genügen.

Grüße vom marabu

eXpli 16. Jan 2008 21:18

Re: Query aus DBEdit-Fledern bauen...
 
Klappt wunderbar! Dank dir marabu!
-------------------
Jetzt habe ich ein ziehmlich kniffliges Problem!

TabellenName: TabVokabeln
Felder/Spalten: ID_Vokabeln, Vok_Deutsch, Vok_Englisch, Kategorie, Datum

TabellenName: TabKategorie
Felder/Spalten: ID_Kategorie, Kat_Deutsch, Kat_Englisch

Verknüpft sind die Tabellen 1:n von TabKategorie.ID_Kategorie zu Kategorie!

Habe jetzt nun eine DBLookupComboBox welche mir Einträge aus meiner DB anzeigt - genau genommen die Einträge von Kat_Deutsch.

Da es ein Vokabeltrainingstool wird, soll der Benutzer mit der DBLookupComboBox eine Kategorie auswählen und dann sollen alle Vokabeln (im Grid) angezeigt werden die diese Kategorie haben.

Wie bekomme ich denn "DBLookupComboBox1.Text" welcher ja die Kategorie inne hat in meine Abfrage?
Und wie bekomme ich das hin, in einem Dataset die Abfrage über 2 Tabellen zu quetschen? So das im Grid dann zu sehen ist:

Vok_Deutsch, Vok_Englisch, Kat_Deutsch, Datum


Wäre echt klasse von euch wenn ihr mir weiterhelfen könntet!!

marabu 17. Jan 2008 21:53

Re: Query aus DBEdit-Fledern bauen...
 
Hallo,

Zitat:

Zitat von eXpli
... Verknüpft sind die Tabellen 1:n von TabKategorie.ID_Kategorie zu Kategorie! ...

nur um es klar herauszustellen: Du hast eine 1:n Beziehung von Kategorien zu Vokabeln, weshalb du den primary key der Kategorie mit der Vokabel führst.

Die DBLookupComboBox würde dir helfen, wenn du den Fremdschlüssel bei einer Eingabe oder Änderung über seinen Klartext auswählen möchtest. Was du aber jetzt vorhast ist ein Filtern deiner Vokabeln nach der Kategorie. Dazu arbeitest du am besten mit zwei record sets (ADODataSet, ADOQuery, ...) rsKat und rsVok, die du jeweils einer eigenen DataSource-Komponente dsKat bzw. dsVok zuordnest. Die Master-Detail-Verknüpfung zur Realisierung des Filterprozesses erreichst du dann, indem du dsKat der Eigenschaft DataSource von rsVok zuweist. Wenn du dann noch rsVok.MasterFields auf ID_Kategorie setzt, dann solltest du die Filterwirkung beobachten können. Die Bedienung erfolgt z.B. über eine DBComboBox (dsKat) und ein DBGrid (dsVok). Bei Unklarheiten findest du einige Erklärungen zu dieser Technik bei den Eigenschaften DataSource und MasterFields von TADODataset.

Gute Nacht

eXpli 20. Jan 2008 16:47

Re: Query aus DBEdit-Fledern bauen...
 
Das sind jetzt alle Kompos die ich verwende (habe mir neues projekt geöffnet damit ich das versuchen kann):
Delphi-Quellcode:
    ADOConnection1: TADOConnection;
    dsVok: TDataSource;
    DBGrid1: TDBGrid;
    rsKat: TADODataSet;
    rsVok: TADODataSet;
    dsKat: TDataSource;
Meine "Einstellungen":

rsVok.DataSource auf dsKat
rsVok.MasterFields auf Kategorie -> ID_Kategorie
rsVok.IndexFieldnames auf Kategorie
rsVok.CommandText steht "select * from TabVokabeln"

rsKat.DataSource auf nix
rsKat.MasterFields auf Kategorie -> ID_Kategorie
rsKat.IndexFieldnames auf Kategorie
rsKat.CommandText steht "select * from TabKategorie"

dsVok.DataSet auf rsVok
dsKat.DataSet auf rsKat

DBGrid.DataSource auf dsVok

DBComboBox.DataSource auf dsKat


Wenn ich der DBComboBox für die DS, dsKat zuordne passiert garnix :>.

Hat einer von euch ne Idee? Need Help :(

marabu 20. Jan 2008 20:44

Re: Query aus DBEdit-Fledern bauen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe dir eine Demo erstellt. Da ich gerade kein MS Access zur Verfügung habe, basiert sie auf Paradox Tabellen. Wenn du sie studierst, dann wirst du die Zusammenhänge vielleicht besser verstehen und an dein Projekt anpassen können.

Wenn du weiterhin Schwierigkeiten hast, dann stelle selbst ein kleines Demo-Projekt samt MDB-Datei bereit.

Freundliche Grüße

eXpli 21. Jan 2008 19:35

Re: Query aus DBEdit-Fledern bauen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Klappt soweit ganz gut! Aber mit der ComboBox hab ich noch Probleme. Die will noch nicht richtig funktionieren. Kann dort nichts auswählen. Wenn ich mit dem Navigator die Kategorien durchswitche verändert sich auch die Kategorie in der ComboBox. Aber ich kann sie halt nicht in der Box auswählen und damit switchen :(

Hier mal mein Testprojekt...

Wichtig: Die Vokabeln.mdb muss einfach nur auf die C: Partition!

marabu 21. Jan 2008 19:50

Re: Query aus DBEdit-Fledern bauen...
 
Hi,

ohne dass ich mir dein Testprojekt schon angesehen habe: Eine DBComboBox kannst du nicht sinnvoll zur Filterung verwenden. Jeder Wertwechsel muss ja im darunter liegenden Datenbankfeld gespeichert werden, damit der Filtermechanismus anspringt.

Filtern könntest du mit einer ComboBox, aber dann ist der Ansatz über die MasterSource nicht mehr möglich. Du musst dann die ComboBox zuerst füllen und dann bei deren Ereignis OnChange() die Filter-Eigenschaft des DataSet anpassen.

eXpli 21. Jan 2008 20:41

Re: Query aus DBEdit-Fledern bauen...
 
Hmm ich möchte das nicht so kompliziert haben. Gibts denn ne komponente bei der man Auswählen kann und dabei die bestehenden Kategorien sehen kann? ListBox oder sowas?

marabu 21. Jan 2008 21:40

Re: Query aus DBEdit-Fledern bauen...
 
Da bietet sich das DBGrid an. Du kannst es so konfigurieren, dass es wie eine ListBox aussieht - falls dir die Gitteroptik nicht gefällt. Alle anderen DB-Controls dienen der Veränderung eines Datenfeldes, was du bestimmt nicht willst. Und alle nicht daten-sensitiven Controls erfordern das Arbeiten mit den Dataset-Eigenschaften Filtered und Filter an Stelle von MasterSource, aber ich fürchte ich wiederhole mich.

Gute Nacht


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz