Nach verarbeitung eines SQL Query ein neuen Query-Inhalt starten!



  • Folgender Code:

    // Datum in variable selected_Date speichern
                                TDate selected_Date = Form1->txt_von->Text;
                                TDate end_Date = Form1->txt_bis->Text;
    
                                Form1->DataSource1->DataSet = Form1->Query2;
                                Form1->Query2->Close();
                                Form1->Query2->SQL->Clear();
    
                                // Übergabe als Parameter an das SQL Query
                                Form1->Query2->SQL->Add("select a.su0003 as Datum,sum(a.su0005) as Summe\
                                from fibu.kontensummen a\
                                join zmis.kontenplan b\
                                on a.su0002 = b.kp0001\
                                where a.ma0001=:mandantenNummer_Ges\
                                and b.kp0000 = (select ma5006 from zmis.mandant where ma0001 =:mandantenNummer_Ges)\
                                and a.su0003 between :selected_Date and :end_Date\
                                and b.kp0003 =:eingegebeneKennziffer\
                                group by a.su0003 order by a.su0003");
                                Form1->Query2->ParamByName("mandantenNummer_Ges")->AsString = mandantenNummer_Ges;
                                Form1->Query2->ParamByName("selected_Date")->AsDateTime = Form1->txt_von->Text;
                                Form1->Query2->ParamByName("end_Date")->AsDateTime = Form1->txt_bis->Text;
                                Form1->Query2->ParamByName("eingegebeneKennziffer")->AsString = eingegebeneKennziffer;
                                //Form1->Query2->ParamByName("name")->AsString = name;
                                Form1->Query2->Open();
                                Form1->Query2->First();
                                Form1->grid_Anz->Columns->Items[0]->Title->Caption = "Datum:";
                                Form1->grid_Anz->Columns->Items[1]->Title->Caption = name;
    

    Das Query ist sozusagen abgearbeitet und die Daten werden im dbgrid angezeigt.
    ich möchte jetzt das gleiche Query nutzen und einen neuen SQL Befehl starten, ohne dass sich die Anzeige im DBGrid ändert.

    Das Query soll danach nur die Spalten Köpfe ändern!!!!

    Wie muss ich da vor gehen, dass ich das alles über ein Queryy mache oder muss ich da ein zweites haben???

    Zeigt im Moment nur leere Menge wenn ich sowas mache wie

    Query2->SQL->Clear();
    

    oder so!



  • Hallo,

    Es wäre besser eine zweite Query zu benutzen. Wenn du die erste weiterverwenden willst, mußt du die Verknüpfung (Datsource) kappen.



  • @braunstein: wenn ich die datasource kappe, sind die daten nicht mehr in dem dbgrid oder???

    2. kann ich mit dem zweiten query die gleiche datasource nutzen???



  • Das DBGrid ist mit der Datasource verknüpft. Diese wiederum verknüpft Query und Database. Genau hier müsstest du die Verknüpfung aufheben. Keine Ahnung ob das überhaupt so geht. Ich verwende immer eine zweite Query.
    2. Du kannst die gleiche Database nutzen. Eine Datsource mußt du ja in der Query nicht angeben.



  • habe das testweise jetzt mal so gemacht allerdings bleibt das memo leer!?
    hab ich was vergessen???

    /////////////////////////////////////////////
                                Form1->Query1->Close();
                                Form1->Query1->SQL->Clear();
                                Form1->Query1->SQL->Add("select * from fibu.kertexte where kt0001 =:eingegebeneKennziffer");
    Form1->Query1->ParamByName("eingegebeneKennziffer")->AsString = eingegebeneKennziffer;
                                Form1->Query1->Open();
                                Form1->Query1->First();
    
                                int AnzSpalten = 5;
                                while (!Query1->Eof)
                                {
                                     for (int i=0;i<=AnzSpalten;i++)
                                     {
                                         Memo1->Lines->Add(Query1->Fields->Fields[i]->AsString);
                                     }
                                     Query1->Next();
                                }
                                /////////////////////////////////////////////
    


  • Hallo

    Dein Quellcode-Auszug ist soweit in Ordnung. Überprüf mit dem Debugger, was in eingegebeneKennziffer steht, und wieviele Datensätze überhaupt von der Bedingung erfasst werden.

    Und das Form1-> kannst unf solltest du innerhalb von Membermethoden von TForm1 auch weglassen.

    bis bald
    akari


Anmelden zum Antworten