Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   dbCheckbox und dbGrid mit Abfrage (https://www.delphipraxis.net/181286-dbcheckbox-und-dbgrid-mit-abfrage.html)

Dejan Vu 9. Aug 2014 21:42

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von blutigerAnfänger (Beitrag 1268142)
Na im DrawColumnCell!!

Schau Dir mal den Code an. Dort wird verglichen, ob das Feld der darzustellenden Zelle/Spalte identisch mit dem Feld ist, welches in der TDBCheckBox hinterlegt ist. Welcher Feldname ist denn dort hinterlegt? Ich weiß es nämlich nicht. Schau doch mal bitte im Objektinspektor nach.

blutigerAnfänger 10. Aug 2014 16:16

AW: dbCheckbox und dbGrid mit Abfrage
 
Also ich hab jetzt die Datenbank erneuert, die Domain nach Vorschrift von Perlsau #16 mit IBExpert angelegt. Der Quelltext wurde rechtschreibmäßig (DBCheckbox.dataField := 'Feld' nach 'FELD') abgeändert. Und jetzt läuft gar nichts mehr. Fehlermeldung (ins Deutsche übersetzt): 'FELD' ist kein boolean Format.
Was jetzt? Muß die Domain aktiert werden? oder Wie bekomme ich nun ein boolean Feld, da Firebird keines mitliefert.

Dejan Vu 10. Aug 2014 16:59

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von blutigerAnfänger (Beitrag 1268220)
...(DBCheckbox.dataField := 'Feld' nach 'FELD') ...

mit 'FELD' ist der Name des Feldes gemeint, welches Du als Checkbox darstellen willst :wall:

Wie heißen deine drei Felder/Spaltennamen?

blutigerAnfänger 10. Aug 2014 17:58

AW: dbCheckbox und dbGrid mit Abfrage
 
1.Feld FELD Typ Integer
2.Feld NAME Typ varchar(50)
3.Feld BEZEICHNUNG Typ varchar(250)

Dejan Vu 10. Aug 2014 19:04

AW: dbCheckbox und dbGrid mit Abfrage
 
Ok. Du musst lernen, Programme zu debuggen, also Breakpoints setzen, schrittweise durchlaufen etc. Dann wäre der Fehler sofort aufgefallen. Auch ist es wichtig, der IDE zu sagen, den integrierten Debugger zu verwenden und bei Exceptions anzuhalten (alles in den Debug-Optionen).

Also
1. 'FELD' statt 'Feld' (hast Du schon beobachtet)
2. Auf das Feld kann nicht per 'AsBoolean' zugegriffen werden, denn es ist ja kein Boolean-Feld. Ersetze also die eine Zeile, füge noch die fehlenden Events hinzu (dient dem Editieren) und dann sollte das Problem gelöst sein.

Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol:
  Integer; Column: TColumn; State: TGridDrawState);

const IsChecked : array[Boolean] of Integer =
      (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  DrawState: Integer;
  DrawRect: TRect;
begin
  if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
     DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
     DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
     DBCheckBox1.Width := Rect.Right - Rect.Left;
     DBCheckBox1.Height := Rect.Bottom - Rect.Top;

     DBCheckBox1.Visible := True;
    end
  end
  else
  begin
    if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
      DrawRect:=Rect;
      InflateRect(DrawRect,-1,-1);
      DrawState := ISChecked[Column.Field.AsInteger = 1]; // <----
      DBGrid1.Canvas.FillRect(Rect);
      DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
                       DFC_BUTTON, DrawState);
    end;
  end;
end;

Lemmy 14. Aug 2014 14:22

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von Dejan Vu (Beitrag 1268668)
Was soll das denn? User-Bashing? Sowas von blöd.

ja, nur anders rum.. Heute angemeldet, ne Profilseite die IMHO in Richtung Beleidigung geht.. Ich habe das Team schon informiert, ich hoffe es schaut jemand vorbei bevor das hier ausartet....

Dejan Vu 14. Aug 2014 14:27

AW: dbCheckbox und dbGrid mit Abfrage
 
Gut. Ich auch. Streiten/nicht einer Meinung sein ist eine Sache, aber das geht zu weit.

blutigerAnfänger 15. Aug 2014 16:31

AW: dbCheckbox und dbGrid mit Abfrage
 
Es funktioniert !!:-D

Danke an alle.
Zitat:

Zitat von Lemmy (Beitrag 1268670)
Zitat:

Zitat von Dejan Vu (Beitrag 1268668)
Was soll das denn? User-Bashing? Sowas von blöd.

Heute angemeldet, ne Profilseite die IMHO in Richtung Beleidigung geht.. Ich habe das Team schon informiert, ich hoffe es schaut jemand vorbei bevor das hier ausartet....

Zitat:

Zitat von Dejan Vu (Beitrag 1268671)
Gut. Ich auch. Streiten/nicht einer Meinung sein ist eine Sache, aber das geht zu weit.

Ich weiß hier nicht worum es geht. Muß ich hoffentlich auch nicht.

Dejan Vu 16. Aug 2014 07:31

AW: dbCheckbox und dbGrid mit Abfrage
 
Das war nur irgendein Vollpfosten, der hier rumgepöbelt hat. Seine Beiträge wurden dann entfernt.

blutigerAnfänger 30. Aug 2014 16:59

AW: dbCheckbox und dbGrid mit Abfrage
 
Ich dachte ich hätte es geschafft.
Zitat:

Zitat von blutigerAnfänger (Beitrag 1267332)

Ziel ist es: Die zu editierenden Datensätze sollen aus Abfragen der Datentabelle erzeugt werden und bei veränderung von true oder false über UPDATE zurückgeschrieben werden.


Delphi-Quellcode:
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin

DBGrid1.Columns[0].ReadOnly :=False;

  if DBCheckBox1.Checked = true then
    begin
     DBCheckBox1.Checked := False;
    end ;

{if DBCheckBox1.Checked = False then
     begin
     DBCheckBox1.Checked := True;
     end ;
 }
end;
Die Veränderung von true auf false und false auf true funktioniert nicht. Ich kann zwar eine Checkbox mit Haken auf false setzen, aber die Änderung wird nicht übernommen. Das Löschen der geschweiften Klammern erzeugt auch noch einen Stack Überlauf.

Für die Übernahme der Änderung in die Datenbank habe ich folgenden Code:
Delphi-Quellcode:
procedure TForm1.inDBspeichernClick(Sender: TObject);
begin

  with Query1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Update Tabelle set FELD ');
    Active:=True;
  end;

end;
Auch da funktioniert was nicht, FELD wird gar nicht gefunden! ? Obwohl es in der AbfrageProzedur läuft.

Mittlerweile bin ich wieder auf Hilfe angewiesen. Danke.

himitsu 30. Aug 2014 17:12

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von blutigerAnfänger (Beitrag 1270324)
Das Löschen der geschweiften Klammern erzeugt auch noch einen Stack Überlauf.

Rate mal, welches Ereignis ausgelöst wird, wenn sich der Wert einer CheckBox ändert? Egal ob durch den Benutzer oder vom Programm.
OnClick :stupid:

Aber das hätte man durch Debuggen rausbekommen können (das Zuweisen
Delphi-Quellcode:
DBCheckBox1.Checked := True;
im Einzelschritt durchgehen),
bzw. durch einen Blick in den Stacktrace, nach der Exception. (wer, wo und warum die Funktionen aufrief)

Die CheckBox ändert selber ihren Status, wenn man sie anklickt, also du brauchst das Checked hier eigentlich nicht zu manipulieren.

Delphi-Quellcode:
if DBCheckBox1.Checked then // if DBCheckBox1.Checked = True then
  DBCheckBox1.Checked := False;
if not DBCheckBox1.Checked then // if DBCheckBox1.Checked = False then
  DBCheckBox1.Checked := True;
Sowas ist natürlich auch "sinnlos", denn nach dem ersten IF ist Checked immer False (entweder es war schon False und blieb unverändert, oder es wurde auf False geändert)
und beim zweiten IF wird es dadurch natürlich gleich wieder auf True gesetzt, womit es am Ende immer True wäre.
Delphi-Quellcode:
if DBCheckBox1.Checked then
  DBCheckBox1.Checked := False
else
  DBCheckBox1.Checked := True;
Aber, wie gesagt, brauchst du an dem Checked, in der OnChangeOnClick-Methode, eigentlich garnicht dran rumspielen, da es bereits von der VCL umgeschaltet wird.



Zitat:

SQL-Code:
Update Tabelle set FELD

"FELD" ist ein Feld in der Tabelle "Tabelle"?

Auf was soll FELD eigentlich gesetzt werden?

Und welcher Datensatz soll eigentlich geändert werden? (bei dir alle Datensätze der Tabelle)

Beispiel:
SQL-Code:
UPDATE tabelle SET feld = neuerWert WHERE bedingung





Tipp: Besser nicht mit False und vorallem nicht mit True vergleichen.
Außerdem ist das nicht nötig, da der Boolean für's IF eh schon vorhanden ist.
Delphi-Quellcode:
if DBCheckBox1.Checked = True then
if DBCheckBox1.Checked = False then

if DBCheckBox1.Checked then
if not DBCheckBox1.Checked then

DeddyH 30. Aug 2014 17:38

AW: dbCheckbox und dbGrid mit Abfrage
 
Abgesehen von der Sinnlosigkeit hätte in diesem Fall auch ein einfaches Negieren genügt:
Delphi-Quellcode:
DBCheckBox1.Checked := not DBCheckBox1.Checked;
,was in der Langform nicht anderes heißt als
Delphi-Quellcode:
if DBCheckBox1.Checked then
  DBCheckBox1.Checked := false
else
  DBCheckBox1.Checked := true;

blutigerAnfänger 30. Aug 2014 17:59

AW: dbCheckbox und dbGrid mit Abfrage
 
@ himitsu
Den Inhalt der geschweiften Klammer hab ich gelöscht, soweit verstehe ich das auch. Dennoch bleibt die Veränderung des Datensatzes (also das Abklicken eines Häkchens) nicht erhalten. Das Anklicken einer Checkbox geht auch nicht (weil ja nicht programmiert?).

Zitat:

Zitat von himitsu (Beitrag 1270325)


"FELD" ist ein Feld in der Tabelle "Tabelle"?

Auf was soll FELD eigentlich gesetzt werden?

Und welcher Datensatz soll eigentlich geändert werden? (bei dir alle Datensätze der Tabelle)

Beispiel:
SQL-Code:
UPDATE tabelle SET feld = neuerWert WHERE bedingung

FELD ist das allererste Feld in der Tabelle "Tabelle".
Geändert werden soll nur der An- oder Abgeklickte Datensatz, welcher mit Select... ermittelt wird.
Zur Vereinfachung wird hier die komplette Tabelle angezeigt, da im Anwendungsfall es auch mehrere Antwortdatensätze geben wird. Wie ich nun die Bedingung definieren soll, damit nur der An-oder Abgeklickte Datensatz gespeichert wird ist mir im Moment noch unklar.

p80286 30. Aug 2014 22:11

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von blutigerAnfänger (Beitrag 1270329)
Wie ich nun die Bedingung definieren soll, damit nur der An-oder Abgeklickte Datensatz gespeichert wird ist mir im Moment noch unklar.

Nun, im allgemeinen haben Datenbanktabellen eine Spalte/Feld, die/das einen eindeutigen Schlüssel enthält. Mit diesem Schlüssel kann man jeden Datensatz identifizieren.

Gruß
K-H

himitsu 30. Aug 2014 22:18

AW: dbCheckbox und dbGrid mit Abfrage
 
Wobei eine DBCheckBox den Wert eigentlich selber ändern sollte, im verbundenen Feld des aktuellen Records der Query-Komponente (DataSet).
Und beim nächsten Post würden dann die Änderungen automatisch in die DB zurückgeschrieben. :stupid: :gruebel:

Das ist ja grade ein Grund für die Existenz der DB-Komponenten (TDBCheckbox),
also daß sie die Daten selber aus dem DataSet holen und auch Änderungen zurückscheiben.


Wohingegen man das bei den nicht-datensensitiven Komponenten (TCheckBox) alles selber machen müsste.

blutigerAnfänger 31. Aug 2014 13:41

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von p80286 (Beitrag 1270381)
Zitat:

Zitat von blutigerAnfänger (Beitrag 1270329)
Wie ich nun die Bedingung definieren soll, damit nur der An-oder Abgeklickte Datensatz gespeichert wird ist mir im Moment noch unklar.

Nun, im allgemeinen haben Datenbanktabellen eine Spalte/Feld, die/das einen eindeutigen Schlüssel enthält. Mit diesem Schlüssel kann man jeden Datensatz identifizieren.

Gruß
K-H

Das mit der ID Nummer ist mir beim Abschicken meiner letzten Post auch eingefallen. Also muß ich einen ID-Nummerngenerator? programmieren in einem eigenständigen Feld. Nun mit IBExpet kein Problem.


Es bleibt immer noch die Nichtübernahme des "Häkchens" beim DBGrid zu lösen.
Noch mal zur Verdeutlichung des Sinns dieser Sache: Der Anwender selektiert aus mehreren tausend Datensätzen einige wenige heraus. Der Datensatz welcher ihm letzlich zusagt soll (soweit nicht vorhanden) mit Häckchen markiert werden. Weiter nichts. Die Markierung (Häkchen) soll keine Aktion oder Ähnliches auslösen.

himitsu 31. Aug 2014 15:38

AW: dbCheckbox und dbGrid mit Abfrage
 
'ner datenunabhängige ID ist oftmal von Vorteil.

Aber im Grunde kann man auch einen anderen "eingeutigen" Indikator verwenden. (ein oder mehrere Unique-Felder)

Perlsau 31. Aug 2014 16:52

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von blutigerAnfänger (Beitrag 1270402)
Es bleibt immer noch die Nichtübernahme des "Häkchens" beim DBGrid zu lösen.

Ich bin mir ziemlich sicher, daß dein Problem mit einer fehlerhaften Einstellung deiner Query- bzw. Dataset-Komponente zusammenhängt. In Posting 20 hatte ich bereits die Frage gestellt, ob deine Query- oder Dataset-Komponente irgend ein Property aufweist, das die Boolean-Funktionalität ein- und ausschaltet. Du hattest zwar geantwortet "alles überprüft", aber keine detaillierten Angaben gemacht, ob denn nun so ein Property existiert oder nicht. Bei meinen IbDac-Komponenten z.B. heißt dieses Property (in den Optionen des Querys) BooleanDomainFields und muß auf True gestellt werden, damit die Komponente mit Boolean-Feldern arbeiten kann. Ebenso ist es wichtig, die für deine Komponente korrekte Boolean-Deklaration in Firebird zu wählen. Ein Boolean ist eben nicht einfach wahr oder falsch (bzw. true oder false), sondern z.B. so deklariert, daß 0 False ist und alles, was nicht 0 ist, als True gilt. Manche Komponenten aktzeptieren als Grundlage dieser Deklaration nur ein SmallInt in der DB, andere benötigen z.B. einen Integer als Basis. Wie sich das bei deinen (alten) DB-Komponenten verhält, weiß ich leider nicht, das mußt du selbst bzw. jemand, der über deine Delphi-Version verfügt, herausfinden.

Du könntest z.B. mal einen ScreenShot des Objektinspektors hochladen, der die Optionen deines Datasets zeigt ...

Es gibt auch noch die Möglichkeit, ein berechnetes Feld in deiner Query-Komponente zu erstellen und in GetText je nach Feldinhalt den Wert True oder False zuzuweisen ...

blutigerAnfänger 31. Aug 2014 19:54

AW: dbCheckbox und dbGrid mit Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 5)
Anbei die Screenshots der meisten Elemente: Ich hoffe sie sind aussagekräftig genug.

Dejan Vu 31. Aug 2014 20:04

AW: dbCheckbox und dbGrid mit Abfrage
 
@Perlsau: Ich glaube, das ist gelöst. Die Datenbank liefert 0/1, aber das TDBCheckBox-Teil muss ja wissen, was 'True' und was 'False' ist. Das macht er, indem die Eigenschaften 'ValueChecked' und 'ValueUnchecked' zugewiesen werden, allerdings im Code. Lass dich also nicht von den Eigenschaften im OI verwirren, die TE hier gepostet hat.

Ich glaube, der Code im OnClick der TDBCheckbox-komponente ist überflüssig und falsch, denn er macht genau das wieder rückgängig, was die Komponente eh gemacht hätte. Also: Weg damit. Bei mir funktioniert es nämlich. Und ich habe FB extra installiert, um mir ganz sicher zu sein.

Also: Das TDBCheckBox brauch kein OnClick-Event. Es benötigt gar nichts, nur die richtigen Eigenschaften.

blutigerAnfänger 31. Aug 2014 20:38

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von Dejan Vu (Beitrag 1270441)

Also: Das TDBCheckBox brauch kein OnClick-Event. Es benötigt gar nichts, nur die richtigen Eigenschaften.

Erledigt:-D

keine Änderung alles wie vorher:(:(

Dejan Vu 1. Sep 2014 07:26

AW: dbCheckbox und dbGrid mit Abfrage
 
Es funktioniert bei mir aber. Dein hier eingestelltes Projekt mit den angepassten 'ValueChecked' und 'ValueUnchecked' funktioniert, sofern der Feldname korrekt ist. 100% getestet, verifiziert.

blutigerAnfänger 1. Sep 2014 08:08

AW: dbCheckbox und dbGrid mit Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei mein komplettes fehlerhaftes Projekt mit Datenbank und .exe. Ich habe den Speicherteil entfernt. Ich werde das ganze Projekt noch einmal mit IB und einmal mit Jedi neu zusammenschreiben und mich dann wieder melden. Danke für eure bisherigen Bemühungen.

mkinzler 1. Sep 2014 08:36

AW: dbCheckbox und dbGrid mit Abfrage
 
Was geht den dort genau nicht? Auf den ersten Blick scheint es ja zu funktionieren.

Wenn man diverse Unschönheiten übersieht:
-Fester Pfad auf Datenbank
-Datenbankverbindung zur Designtime aktiv!
-Verwendung von with + überflüssigen Code

Delphi-Quellcode:
procedure TForm1.AbfrageClick(Sender: TObject);
  begin
    Query1.SQL.Text := 'Select * from Tabelle;';
    Query1.Open;
  end;
ist kürzer und ohne with;

Jasocul 1. Sep 2014 09:07

AW: dbCheckbox und dbGrid mit Abfrage
 
Delphi-Quellcode:
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
  {
  if DBCheckBox1.Checked then
     DBCheckBox1.Caption := DBCheckBox1.ValueChecked
  else
     DBCheckBox1.Caption := DBCheckBox1.ValueUnChecked;
    }

 DBGrid1.Columns[0].ReadOnly := False;

  if DBCheckBox1.Checked then
    begin
     DBCheckBox1.Checked := False;
    end ;

end;
Es wurde schon ausführlich erklärt, dass die DBCheckBox in dieser Methode nicht gesetzt werden darf.
So, wie der Source jetzt ist, wird die DBCheckBox immer False sein.

Nochmal:
Wenn DBCheckBox.Checked in dieser Methode gesetzt wird, wird die Methode automatisch wieder auf gerufen.

Ergebnis-Prüfung:
Fall 1: Die Box ist nicht gechecked.
- Anwender setzt die Box auf Checked.
- Die Methode wird dadurch aufgerufen.
- Methode setzt die Box auf nicht gechecked und ruft sie ohne Auswirkung nochmal auf.
Ergebnis: Die Box ist nicht gechecked.

Fall 2: Die Box ist gechecked.
- Anwender setzt die Box auf nicht Checked.
- Die Methode wird dadurch aufgerufen.
- Es passiert aber nichts weiter (außer ReadOnly-Einstellung).
Ergebnis: Die Box ist nicht gechecked.

Beide Fälle führen also dazu, dass DBCheckBox.Checked immer False sein wird, sobald der Anwender diese anklickt.
Du kannst die Methode komplett entfernen. Ich sehe auch für das
Delphi-Quellcode:
ReadOnly := false
keine Notwendigkeit.

Dejan Vu 1. Sep 2014 10:48

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von Dejan Vu (Beitrag 1270441)
... der Code im OnClick der TDBCheckbox-komponente...: Weg damit. ...
Also: Das TDBCheckBox braucht kein OnClick-Event. ...

:wall:

blutigerAnfänger 1. Sep 2014 11:42

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von Dejan Vu (Beitrag 1270503)
Zitat:

Zitat von Dejan Vu (Beitrag 1270441)
... der Code im OnClick der TDBCheckbox-komponente...: Weg damit. ...
Also: Das TDBCheckBox braucht kein OnClick-Event. ...

:wall:

Das on Click Event ist doch im Objektinspektor ausgeschaltet!!
dann kann es doch im Quelltext stehen bleiben, oder nicht!?:?

Perlsau 1. Sep 2014 11:48

AW: dbCheckbox und dbGrid mit Abfrage
 
Wozu?

Jasocul 1. Sep 2014 12:07

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von blutigerAnfänger (Beitrag 1270512)
[Das on Click Event ist doch im Objektinspektor ausgeschaltet!!
dann kann es doch im Quelltext stehen bleiben, oder nicht!?:?

Sorry, habe ich nicht gesehen. Ich lösche solche Sachen immer gleich aus dem Source. Deswegen bin ich nicht auf die Idee gekommen, dass das im OI entfernt wurde.

Leider habe ich hier kein FB/IB zur Verfügung und kann deswegen nicht weiter testen.

mkinzler 1. Sep 2014 12:23

AW: dbCheckbox und dbGrid mit Abfrage
 
http://sourceforge.net/projects/fire...d.zip/download

Jasocul 1. Sep 2014 12:30

AW: dbCheckbox und dbGrid mit Abfrage
 
Ich habe das jetzt mal auf eine andere Datenbank umgesetzt.
Es funktioniert bei mir einwandfrei!

Allerdings habe ich zur Sicherheit auch die Vergleiche der Feldnamen angepasst:
Delphi-Quellcode:
if AnsiUpperCase(Column.Field.FieldName) = AnsiUpperCase(DBCheckBox1.DataField) then
Einfach um sicher zu sein, dass nicht doch noch ein Buchstabe klein geschrieben ist. Natürlich muss die Änderung an allen relevanten Stellen durchgeführt werden.

Ich vermute aber, dass der Fehler an der falschen Stelle gesucht wird. Wie sieht es denn mit der IBTransaction aus? Wenn die nicht gebraucht wird, einfach mal rausschmeißen.

blutigerAnfänger 1. Sep 2014 19:53

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von Jasocul (Beitrag 1270521)
Ich habe das jetzt mal auf eine andere Datenbank umgesetzt.
Es funktioniert bei mir einwandfrei!

Ich vermute aber, dass der Fehler an der falschen Stelle gesucht wird. Wie sieht es denn mit der IBTransaction aus? Wenn die nicht gebraucht wird, einfach mal rausschmeißen.

An der IBTransaction liegt's nicht. Ohne die geht keine Abfrage.

Mittlerweile habe ich Delphi neu installiert. Das Projekt neu programmiert, ohne OnClick Event. Dennoch bleibt alles beim Alten. Es funktioniert nicht.:(

Dejan Vu 2. Sep 2014 08:02

AW: dbCheckbox und dbGrid mit Abfrage
 
Nachdem wir uns hier die ganze Zeit mit der Darstellung beschäftigt hatten und das ja wohl fast perfekt funktioniert, sollte man sich nun darauf fokussieren, das die ganze Query nicht änderbar ist. Du kannst ja im Grid noch nicht einmal irgend einen Wert ändern, geschweige denn die Checkbox.

Wenn Du die TIBQuery durch ein TIBTable ersetzt, geht es nämlich.

mkinzler 2. Sep 2014 10:13

AW: dbCheckbox und dbGrid mit Abfrage
 
Oder ein Update-Skript im Updateobjekt hinterlegen

blutigerAnfänger 2. Sep 2014 10:34

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von Dejan Vu (Beitrag 1270626)
Nachdem wir uns hier die ganze Zeit mit der Darstellung beschäftigt hatten und das ja wohl fast perfekt funktioniert, sollte man sich nun darauf fokussieren, das die ganze Query nicht änderbar ist. Du kannst ja im Grid noch nicht einmal irgend einen Wert ändern, geschweige denn die Checkbox.

Wenn Du die TIBQuery durch ein TIBTable ersetzt, geht es nämlich.

IBQuery durch IBTable? Wie soll den da die Abfrage realisiert werden? Table besitzt doch keine SQL Komponente.

Zitat:

Zitat von mkinzler (Beitrag 1270669)
Oder ein Update-Skript im Updateobjekt hinterlegen

Wie bitte ????

mkinzler 2. Sep 2014 10:37

AW: dbCheckbox und dbGrid mit Abfrage
 
Lege eine TIBUpdateSQL Komponente auf die Form/Datamodul. Hinterlege das Statement ( in diesem Fall .ModifySQL) und verbinde es mit der Eigenschaft .UpdateObject der Query-Komponente)
Oder man nimmt gleich ein TIBDataSet

Dejan Vu 2. Sep 2014 13:08

AW: dbCheckbox und dbGrid mit Abfrage
 
Ah.. Markus bringt Licht ins Dunkel. So geht das.
Zitat:

Zitat von blutigerAnfänger (Beitrag 1270677)
IBQuery durch IBTable? Wie soll den da die Abfrage realisiert werden? Table besitzt doch keine SQL Komponente.

Aber eine TableName-Eigenschaft und ich denke, ein 'select * from Tabelle' schreit danach.

Aber in Anbetracht deiner nicht sonderlich komplexen Tabelle dachte ich mir, es ginge hier eh um einen proof-of-concept und da nun die Sichtbarkeit und sogar das Editieren prinzipiell funktioniert, sollte das doch schon reichen.

Bitteschön übrigens für das Ausprobieren und Auflösen der Probleme.

blutigerAnfänger 2. Sep 2014 17:21

AW: dbCheckbox und dbGrid mit Abfrage
 
Zitat:

Zitat von mkinzler (Beitrag 1270680)
Lege eine TIBUpdateSQL Komponente auf die Form/Datamodul. Hinterlege das Statement ( in diesem Fall .ModifySQL) und verbinde es mit der Eigenschaft .UpdateObject der Query-Komponente)
Oder man nimmt gleich ein TIBDataSet

Ich habe jetzt die IBQuery ausgeschaltet und stattdessen mit IBDataset die Abfrage realisiert, welches auch funktioniert.
Delphi-Quellcode:
procedure TForm1.AbfrageClick(Sender: TObject);
begin
{  with Query1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Select * from Tabelle ');
    Active:=True;
  end;}

  with IBDataSet1 do
  begin
    Close;
    SelectSQL.Clear;
    SelectSQL.Text :=('Select * from Tabelle ');
    Open;
  end;
end;
Und nun ratet mal was beim Click auf die DBCheckbox passiert?
Richtig geraten: nichts, keine Änderung, kein Abklicken oder Anklicken eines Datensatzes. Also alles beim Alten.
Mein "fehlerhaftes Projekt" wurde 4x heruntergeladen. Ich möchte gerne wissen, ob der Fehler bei Anderen ebenfalls auftritt, oder nicht. Nach einer DelphiNeuinstallation habe ich immer noch diesen Fehler. Woran kann es dann noch liegen, daß die Checkbox nicht reagiert.

mkinzler 2. Sep 2014 17:57

AW: dbCheckbox und dbGrid mit Abfrage
 
Wie sieht dein ModifySQL-Statement aus?

blutigerAnfänger 2. Sep 2014 18:11

AW: dbCheckbox und dbGrid mit Abfrage
 
Modify Statement ist leer. Kann eine SQL Anweisung dieses Problem lösen? Ich glaube nicht. Offenbar verstehe ich deinen Gedankengang nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz