Announcement

Collapse
No announcement yet.

Query in Datei ändern?

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

  • Query in Datei ändern?

    Hello,

    Ich habe ein DBGrid welcher Datei anzeigt aus ein Query.

    Kann Ich direkt Datei ändern in dass Query und die Datei speichern im dass
    database.dbf. m.a.w. wird mit dass SQL UPDATE statement die Datei gespeichert am Festplatte ?

    Ich bekomme immer ein Fehlermeldung dass die Query nür für lesen ist und nicht für schreiben.

    Danke für Ihnen Beitrage...

  • #2
    [C++ Builder 6.0] ist keine Überschrift. Bitte aussagekräftigen Titel wählen
    Christian

    Comment


    • #3
      Hallo,

      Code:
      Query1->RequestLive = true;
      Gruß Knut

      Comment


      • #4
        dann bekomm Ich noch immer :

        Query1 : can not modify a read only dataset.

        Code:
           Query1->Open();
           Query1->FindFirst();
           for(x=1;x<=half_seizoen;x++)
           {
        
              speeldag = Query1->Fields->FieldByName("SPEELDAG")->AsInteger;
              speeldag = speeldag + 1;
              Query1->RequestLive = true;
              Query1->Edit();
              Query1->FieldValues["SPEELDAG"] = speeldag;
              Query1->Post();
              Query1->FindNext();
           }

        Comment


        • #5
          RequestLive muß vor dem öffen (Query1->Open() gesetzt werden

          Comment


          • #6
            Code:
               Query1->RequestLive = true;
               Query1->Open();
               Query1->FindFirst();
            
                for(x=1;x<=half_seizoen;x++)
               {
            
                  speeldag = Query1->Fields->FieldByName("SPEELDAG")->AsInteger;
                  speeldag = speeldag + 1;
                  Query1->Edit();
                  Query1->FieldValues["SPEELDAG"] = speeldag;
                  Query1->Post();
                  Query1->FindNext();
               }
            Noch immer dass gleichen Fehler...


            Comment


            • #7
              Es funkioniert nicht wie Ich vorgestellt habe

              Ich habe z.B.


              Query1
              TTable1
              TDataSource
              DBGrid1

              Gerne will Ich ein Update machen von die Datei in TTable1
              z.B. via Query1:
              UPDATE TTable1 SET field3 = 4, field4 = 2 WHERE field1 = 1 AND field2 = 6 ;
              dieses SQL steht im Query1

              Wass mach Ich falsh dass die Datei nicht gewechselt werde.

              Comment


              • #8
                Ist das noch aktuell?

                Originally posted by Quadran View Post
                Code:
                   Query1->RequestLive = true;
                   Query1->Open();
                   Query1->FindFirst();
                
                    for(x=1;x<=half_seizoen;x++)   // wirkt NICHT auf den Datensatz-Zeiger
                   {
                
                      speeldag = Query1->Fields->FieldByName("SPEELDAG")->AsInteger;
                      speeldag = speeldag + 1;
                      Query1->Edit();
                      Query1->FieldValues["SPEELDAG"] = speeldag;
                      Query1->Post();
                      Query1->FindNext();   // bewegt den Datensatz-Zeiger
                                                // was ist, wenn das Ende der Tabelle erreicht wird?
                   }
                Noch immer dass gleichen Fehler...
                Dein Code ist sehr wahrscheinlich (logisch) falsch (siehe Kommentare oben!)
                Ich verstehe noch nicht, was Du machen willst:
                • Die (vorhandenen) Datensätze durchgehen und dabei ein Feld hochzählen
                • Für eine bestimmte Anzahl neue Datensätze erzeugen

                Jedenfalls solltest Du entweder
                • nur die Datensätze durchgehen
                  Code:
                  while (Query1->Eof)
                  {
                      ...
                      Query1->Next();
                  }
                  oder
                • eine äußere Schleife durchlaufen, dann aber innerhalb der Schleife eher neue Datensätze anlegen, falls noch nicht vorhanden (hier kommt wieder 'Locate' ins Spiel!).
                • oder einfach
                  Code:
                  UPDATE <TableName> SET speeldag = speeldag + 1;
                  Genaue SQL-Anweisung bitte nachlesen, es gibt da eine spezielle Syntax für diesen Fall, glaube ich...


                Gruß Knut

                Comment


                • #9
                  Diese Ist auch kürz erledigt.
                  Danke

                  Comment

                  Working...
                  X