Announcement

Collapse
No announcement yet.

Datensätze markieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensätze markieren

    Also ich weiß nicht so richtig, wie Du Dir den Ablauf vorstellst. Ich bin davon ausgegangen, dass das mit der Query funktioniert, aber nachdem ich das hier gesehen habe, bezweifel ich das! Sorry.<p>
    Wenn Du die Query öffnest, werden in der Query die entsprechenden Datensätze mit den entsprechenden Spalten geholt und geöffnet. Wenn Du dem TQuery-Objekt nun einfach ein Feld hinzufügst, wird das nur funktionieren, wenn das Feld auch wirklich existiert! Zudem stellt sich mir die Frage: Was machst Du mit der Auswahl? Wenn Du einfach mit einem boolschen Feld arbeiten willst, würde ich Dir vielleicht zu einer temporärer Table raten:<br>
    Select into ...<br>
    Da kann man dann auch gleich die neue Spalte hinzufügen und dann mit der temporären Menge weiterarbeiten.<p>Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

  • #2
    Datensätze markieren

    Hallo

    Heute scheint mein "ich-kanns-nicht-Tag" u sein. ich habe folgendes Problem:

    Ich erstelle mit einer Query eine Datenmenge, der SQL-Befehl ist aber erst zur Laufzeit bekannt. Von dieser Datenmenge soll eine Vorschau angezeigt werden, in der man auswählen kann (am liebsten mit einer CheckBox), mit welchen Records aus dieser Datenmenge man weiterfahren will.

    Ich habe folgendes versucht: Ich habe der Query ein berechnetes Feld hinzugefügt, in das ich die Information ob der Datensatz gewählt wird oder nicht schreiben wollte. Soweit so gut. aber da mir dieses Feld erst zur Laufzeit zur verfügung steht kann ich es in keinem Grid, und an keiner CheckBox anhängen. Ausserdem kann ich dieses Feld nicht editieren.

    Hat jemand schon mal soetwas erfunden? Ich benütze die InfoPower Komponenten. Ich kann also ohne weiteres eine Checkbox in einem Grid darstellen.

    Danke für Eure Hilfe

    Gruss Fabian

    Comment


    • #3
      Ich habe so was noch nie gebraucht, aber die Feldnamen sind meist "nur" Strings, dass heißt, Du kannst bei der Checkbox in der Property Feld einfach was reinschreiben, auch wenn es das Feld noch nicht gibt. Hast Du's mal probiert?<p>
      Schöne Grüße, Mario Noac
      Schöne Grüße, Mario

      Comment


      • #4
        Hallo Mario

        Ja das habe ich versucht. Das geht auch. Nur komm ich wohl nicht um ein Grid herum, da die Anzahl Felder immer verschieden ist.
        Und in einem Grid kann ich (bei meinem bescheidenen Wissensstand) die Felder zur Entwicklungszeit nur Formatieren wenn das DataSet für das Gitter Aktiv ist. Ich kann dem Grid also nicht sagen, dass es für mein berechnetes Feld eine CheckBox sein soll. Auch die Spaltenbreite kann ich nicht bestimmen.

        Vielleicht gibt es ja andere Möglichkeiten, aber auf die komm ich einfach nicht

        Ich hab sowas in Word2002 gesehen beim Seriendruck. Da kann mann aus einer Datenquelle die Records mit einer CheckBox abhängen, die man nicht drucken will.

        Gruss Fabia

        Comment


        • #5
          Ich würde es so versuchen:<br>
          Eine einigermassen stimmende Datenquelle aktivieren. Doppelklick aufs Grid -> Alle Felder hinzufügen -> Ein weiteres Feld so hinzufügen -> Datenquelle wieder deaktivieren. Die Einstellungen bleiben gespeichert. Das funzt zumindest beim normalen DBGrid, davon gehe ich jetzt mal aus.<p>
          Schöne Grüße, Mario Noac
          Schöne Grüße, Mario

          Comment


          • #6
            Hi

            Ich habs fast hingekriegt. Danke Mario. Das einzige was noch nicht funktioniert ist das bearbeiten der Query. Ich hab die Query wie folgt erstellt. Ist das inetwa korrekt?

            <Pre>
            procedure TForm1.SpeedButton3Click(Sender: TObject);
            var
            iCnt,i,i1 : Integer;
            NewField : TField;
            s1:string;
            begin
            if myQuery.Fields.Count>0 then
            for iCnt := myQuery.Fields.Count-1 downto 0 do
            myQuery.myQuery.Fields[iCnt].Free;
            myQuery.SQL.Clear;
            myQuery.SQL.Add(s1); //in s1 steht die SELECT Anweisung

            with myQuery do
            begin
            NewField := TStringField.Create(myQuery);
            NewField.FieldName := 'DRUCKEN';
            NewField.DisplayLabel := ' ';
            NewField.Calculated := true;
            NewField.DataSet := myQuery;
            NewField.Visible := true;
            NewField.Size := 1;
            NewField.ReadOnly := False;
            NewField.DisplayWidth := 3;
            FieldDefs.Update;
            for iCnt := 0 to FieldDefs.Count-1 do
            begin
            NewField := FieldDefs[iCnt].CreateField(myQuery);
            NewField.ReadOnly := True;
            end;
            end;
            myQuery.Open;
            //dann möchte ich die Query bearbeiten dh. nur "meine" Checkbox (Feld 'DRUCKEN')
            end;
            <pre>

            Mit RequestLive:=True funktionierts nicht. Ein Update Objekt habe ich auch Versucht. Aber ich kann ja keine Update-,Insert- usw -SQL erstellen, da ich die Anweisung erst zur Laufzeit kenne.

            Kennt jemand eine Lösung für mein Problem? Oder soll ich das nicht mit einer Query lösen? Aber mit omit sonst? Bin für jeden Tip dankbar.

            Gruss Fabia

            Comment


            • #7
              Hallo Fabian,<br>
              schau Dir das DEMO im Ordner MULTIDEL an, das bei InfoPower dabei sind. Dort ist ein Feld Selected mit FieldKind = fkCalculated zur Entwicklungszeit angelegt worden, welchen bei DeleteButtonClick ausgewertet wird.<br>
              Dietma

              Comment


              • #8
                Hallo Dietmar

                Genau das ist es gewesen, was ich brauchte. Besten Dank

                Comment

                Working...
                X