| Autor |
Beitrag |
LuckyStrike4life
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Di 10.06.03 09:23
Morgen,
in dem Projekt, welches momentan mein Auftrag ist, wird auf eine Datenbank zugegriffen und die Eingaben des Users werden in eine Datenbank aufgenommen.
Nun hab ich das Problem, dass es bei einigen Fragen die dem User gestellt werden einfach nur um "JA/NEIN" geht.
Da das ganze System auch von Idioten bedient werden muss, fühle ich mich gezwungen DBCheckBox für diese Aufgabe einzusetzen.
Nun ist es aber so, sobald ich mehrere DBCheckBox's platziert habe, stehen die alle immer in einer Abhängigkeit untereinander, sind grau hinterlegt und schon mit Häckchen versehen. Man kann sie dennoch benutzen, muss nur ewig oft reinklicken. Aber da die DBCheckBox gleich noch auf eine andere DBCheckBox anscheinend zugreift, bringt das alles nichts. Jede DBCheckBox hat ihre eigene Tabellenspalte zugewiesen bekommen, ausser jeweils "Ja/Nein", sind halt pro Spalte zwei.
Dann dachte ich mir ich bräuchte ein bestimmtes Panel, probierte viele aus, aber es brachte alles nichts... ich komm nicht so richtig weiter, brauche dringend Hilfe.
Gruß
Mardin
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 10.06.03 11:33
hallo mardin!
| Zitat: | | Aber da die DBCheckBox gleich noch auf eine andere DBCheckBox anscheinend zugreift |
bist dir sicher, dass du den DBCheckboxen die richtigen datenfelder zugeordnet hast und nicht etwa ein datenfeld mehreren gleichzeitig?
weise ihnen im OnNewRecord event des tables schon einen vordefinierten wert zu (true oder false) dann bist den grauen hintergrund mit dem hakerl auch los
im OI der DBCheckboxen steht AllowGrayed auf false, richtig?
wenn du sie auf panels setzen willst, dann tuts ein ganz gewöhnliches. ein DBPanel ist mir in D4 noch nicht untergekommen
mfg, stefan
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Di 10.06.03 11:55
Danke Stefan,
| grayfox hat folgendes geschrieben: | bist dir sicher, dass du den DBCheckboxen die richtigen datenfelder zugeordnet hast und nicht etwa ein datenfeld mehreren gleichzeitig?
|
Ja, hab ich nochmals gecheckt. Und was vielleicht noch relevant ist, sobald ich eine DBCheckBox setze und an eine Datenbank anbinde, ist diese CheckBox ab den moment so grau hinterlegt wie auch makiert.
| grayfox hat folgendes geschrieben: | | weise ihnen im OnNewRecord event des tables schon einen vordefinierten wert zu (true oder false) dann bist den grauen hintergrund mit dem hakerl auch los |
Was genau soll ich da machen? Die Datenbank besteht ja nun nicht nur aus einer Spalte.
| grayfox hat folgendes geschrieben: | | im OI der DBCheckboxen steht AllowGrayed auf false, richtig? |
Richtig!
| grayfox hat folgendes geschrieben: | | wenn du sie auf panels setzen willst, dann tuts ein ganz gewöhnliches. ein DBPanel ist mir in D4 noch nicht untergekommen |
War ja auch nur eine Idee  .
| grayfox hat folgendes geschrieben: |
[...] mir in D4 noch nicht [...]
|
Mir in Delphi 5 auch nicht wirklich.
Leider komme ich so noch nicht weiter... .
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 10.06.03 17:26
na geh! was tust denn?
1) schau die den inhalt deiner tabelle an - besonders jener felder, welche mit DBCheckBoxen dargestellt werden - vermutlich sind sie leer
eine DBCheckBox, die grau und angehakerlt ist, hat keinen definierten zustand (was soll sie auch anzeigen?)
daher trag in jene felder, die an einer DBCheckBox hängen, entweder true oder false ein
Quelltext 1: 2: 3: 4: 5: 6: 7:
| with table do while not eof do begin edit; FieldByName('Feldname').asBoolean:= true (oder false); post; next end; |
z. B.
im OnNewRecordEvent kann man die eingabefelder schon mit default-werten vorbelegen, also wärs für deine logischen felder nur logisch, dass du dort vorgibst, ob ein feld von anfang an wahr oder falsch sein soll, bevor du dich wieder über graue felder mit hakerl wundern musst.
mfg, stefan
Zuletzt bearbeitet von grayfox am Mi 11.06.03 19:12, insgesamt 1-mal bearbeitet
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Mi 11.06.03 11:36
Ah,
wo soll ich denn den Quelltext hinschreiben, den du mir nett wie du bist gepostet hast?
Du musst etwas genauer werden, ich habe seit 96/97 nicht mehr mit Delphi gearbeitet und das war D2  .
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 11.06.03 12:25
Das graue sind wahrscheinlich NULL Felder. Eventuell würde da ein Trigger weiterhelfen. Also wenn man direkt schon in der DB eingreift, bevor Delphi was mitkriegt.
_________________ Gruß
Hansa
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Mi 11.06.03 13:57
Nullfelder meinst du, weil da, in den entsprechenden Zellen, (noch) nichts steht?
Es wurde mir klar, nach einen kleinen Abstecher ins Delphi 5 Buch, dass es wichtig ist - so wie Stefan es schon meinte, dass bereits etwas in der Spalte stehen muss. Anscheinend läßt sich nur so dieses komische "grau" und "vorgehäkte" beheben.
Leider läßt sich der Code nicht kompilieren, der Punkt vor 'as' musste weg und auch dann meinte Delphi noch, dass es keine Gültige Rechenoperation wäre.
|
|
Tower
      
Beiträge: 99
|
Verfasst: Mi 11.06.03 14:45
Der Code von GrayFox funktionert, allerdings hat er sich vertippt: "asBoolean" zusammengeschrieben sein!
Falls danach noch eine Fehlermeldung kommt, sag doch mal genauer, an welcher Stelle.
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Mi 11.06.03 14:57
Okay,
nun funktioniert der Code. Bei mir schaut er so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| begin with MainDBtabelle do while not eof do begin edit; FieldByName('p_pkw').asBoolean:= false; post; next end; |
Leider aber ohne den nötigen Erfolg. Denn Die DBCheckBox, die auf p_pkw angesetzt ist, bleibt grau und abgehackt. Das es der Code aber schon was bewirkt hat sehe ich, da nun schon jeweils in die entsprechende Zelle T oder F eingetragen ist. Allerdings eben nur ein Buchstabe, warum?
Kann da das Problem jetzt liegen?
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 11.06.03 19:06
Du mußt in Delphi noch die Werte zuweisen, glaube "Items"
_________________ Gruß
Hansa
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mi 11.06.03 19:12
sorry für die leerstelle zwischen as und Boolean - aber bei dieser hitze wärs kein wunder, wenn einem die finger vom keyboard abrutschen ;D
aber ihr seid eh von selbst draufgekommen... (so lernt man auch was  )
wieso steht da 'T' oder 'F' drin?
wenn du alle felder deines tables auf 'false' setzt, dann sollte überall 'false' drinstehen.
bist sicher, dass du die richtige tabelle bearbeitet hast?
apropos, mit welchen komponenten arbeitest denn?
nachdem du nichts erwähnt hast, nehm ich an, dass es eine paradox tabelle ist. oder täusch ich mich da?
mfg, stefan
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mi 11.06.03 19:14
häää? werte zuweisen? items?
@hansa, bitte von was redest denn?
mfg, stefan
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 11.06.03 19:44
Items war verkehrt, aber Items heißt schon "Werte", keine Angst. Bei der CheckBox mußt Du ValueChecked bzw. ValueUnchecked z.B. "Karl" und "Heinz" zuweisen, beim Karl ist dann das Kreuz da.
_________________ Gruß
Hansa
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Do 12.06.03 09:29
Morgen,
also ums nach und nach zu klären.
Momentan ist die Datenbank auf dBase (Win) entstanden. Später werde ich auf Oracle umstellen. Hat mit der Servertechnik hier zu tun, da alles momentan dBase ist und nun eben Oracle werden soll.
Das werden auch noch lustige Nächte.
@grayfox (du weist das sich 'gray' auf 'schwul' reimt?  )
Es steht da T oder F, je nachdem ob ich dem Feld sagte, mit den von dir geschriebenen Code, 'True' oder 'False'.
Delphi hat es jeweils nur als T oder F in die Datenbank aufgenommen, warum auch immer. Nun meinte mein schlaues Delphi 5 Buch (bzw. Wälzer, Schinken, Totschläger ...) das die Felder immer grau hinterlegt werden, wenn in der Spalte, auf die die DBCheckboxen verweisen, kein Wert zu finden ist, der mit den von mir editierten (unter ValueChecket, ValueUnchecket) übereinstimmt. Ich hoffe ich hatte es richtig verstanden, bin mir da nicht mehr so sicher, war ja auch schließlich gestern. Vielleicht sollte ich es nochmals lesen  .
Aber mal ne andere Möglichkeit, würde es nicht funktionieren wenn ich normale TCheckboxen verwende, und mit einer If/Else Anweisung per ButtonClick auswerten lasse und dies dann in die Datenbank übernehme?
Dazu hat mir hier mal einer folgende Anregung geschrieben, die so aber nicht richitg ist
Delphi-Quelltext 1: 2:
| if checkbox.checked = true then fieldbyname(xxx) := 'ja' else if checkbox.checked = false then fieldbyname(xxx) := 'nein' | .
Bessere Idee?
_________________ ... ich kann doch nichts ...
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 12.06.03 09:55
Steht da jetzt wirklich in der DB ein T und ein F drin? Dann schreibe endlich im OI bei ValueChecked T rein und bei ValueUnchecked F. Und beim Umstieg auf Oracle sag ich nur: gute Nacht. Völliges umenken ist dann angesagt und mehrere Monate lang schlaflose Nächte  Eventuell Verlust des Arbeitsplatzes wegen zu hoher EDV-Kosten, verursacht durch Oracle nicht durch Dich.
_________________ Gruß
Hansa
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Do 12.06.03 10:10
@hansa
Du machst mir ja schon mal richtig Mut! Ich freu mich auch nicht auf Oracle, aber ich werd nicht drum rum kommen. Es hat hier 13 Jahre gedauert bis die Leute einigermaßen mit dBase umgehen konnten, es ist für uns alle ein schwerer Abschied.
Aber es ist sicherlich kein Arbeitsplatz gefährdet, dafür viele Nerven. Deshalb kein Arbeitsplatz, weil ich in einem Amt arbeite. Natürlich bin ich kein Beamter, bin eh nur noch ein Jahr hier.
Ich werde das mit T bzw. F im OI machen, warum hab ich das nicht schon gestern getan? Hm.. naja. Probiere es mal aus.
_________________ ... ich kann doch nichts ...
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 12.06.03 10:22
Das mit dem T und dem F wird sicherlich so gehen. Und zu Oracle: versuch doch einfach das noch ein Jahr zu verschieben.  13 oder 14 Jahre, spielt da ein Jahr eine Rolle in einem Amt?  Hintergrund zu dem Off-Topic Oracle Comment: Freund von mir ist seit Jahresanfang arbeitslos, wegen Kosteneinsparung. Letztes Jahr hat er mir noch mit gierigen Augen von den "sagenhaften Oracle Stundensätzen" erzählt und, daß man da einen eigenen Ansprechpartner hat und daß die EDV-Kosten pro Arbeitsplatz bei 10.000 EUR pro Jahr liegen, ohne sein eigenes Gehalt. Was im Umkehrschluß bedeutet: für jeden wegfallenden Arbeitsplatz ist pro Jahr ein Gehalt einzusparen und die 10.000 EUR sonstiger Kosten.
_________________ Gruß
Hansa
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Do 12.06.03 10:24
Also,
im Code steht nun das:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.MainDBtabelleNewRecord(DataSet: TDataSet); begin begin with MainDBtabelle do while not eof do begin edit; FieldByName('p_pkw').asBoolean:= false; post; next end; end; |
Lässt sich auch kompilieren ohne Probleme. Dann geh ich auf eine neue Zeile der DB. Ab den Moment schaut die DBCheckBox auf das Feld, in dem nun ja standardmäßig "false" stehen sollte, da steht aber nur "f".
Feld is makiert und grau. Nun hab ich dann im OI VCheck, und VUcheck auf f gestellt. Brachte aber auch kein Erfolg  .
_________________ ... ich kann doch nichts ...
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Do 12.06.03 10:32
Hört sich ja immer besser an, was du über Oracle zu sagen hast.
Tut mir leid für deinen Freund das er seinen Arbeitsplatz verlieren musste.
In einem Amt spielt ein Jahr sicher keine Rolle, soviel ist sicher. Aber leider liegt es nicht in meiner Hand, wann welches Datenbanksystem eingesetzt wird. Kohle gibt es zumindest genug, wofür zahlen wir sonst Steuern auf jeden Scheiß? Ich möchte nur an die 5 € für ne LuckyStrike BigBox erinnern, die bald fällig sind. Das bringt mich noch ins Grab.
Auch die Arbeitsmoral war für mich die erste Zeit sehr interessant zu erleben. Aber man gewöhnt sich echt schnell dran  .
Egal, dass soll ja nicht das Thema sein... .
_________________ ... ich kann doch nichts ...
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 12.06.03 10:40
| LuckyStrike4life hat folgendes geschrieben: | ... Nun hab ich dann im OI VCheck, und VUcheck auf f gestellt. Brachte aber auch kein Erfolg . |
Wie? Beides auf f ? NUR ValueUnchecked darf auf f stehen, das andere auf t. Und dann auch T,F, True,TRUE,true, FALSE usw. ausprobieren. Um solchen Sachen aus dem Weg zu gehen verwende ich 1 und 0. Ist halt manchmal schon mühsam. Oder hast Du Dich schon angepaßt, heh. 
_________________ Gruß
Hansa
|
|
|