Announcement

Collapse
No announcement yet.

BOF oder EOF

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

  • BOF oder EOF

    Hallo

    Ich bekomme immer eine BOF / EOF fehler mit folgendes Kode:

    Code:
    aantal = ADOTable1->RecordCount;
    
    ShowMessage("Aantal buttons te maken " + IntToStr(aantal));
    
    ADOTable1->Active = true;
    ADOTable1->FindFirst();
    
    
    for(int x=1;x<=aantal;x++)
    {
       fprintf(stream,"<TD><INPUT TYPE=BUTTON OnClick=\"MM_goToURL('parent','%s')\" VALUE=\"%s\"></TD>",ADOTable1->Fields->FieldByName("bestand")->AsString,ADOTable1->Fields->FieldByName("titel")->AsString);
       fprintf(stream,"\n");
       fprintf(stream,"</br></br>\n");
       fprintf(stream,"\n");
    
       ADOTable1->FindNext();
    
    }
    In ADOTable1 sind zwei Rekords vorhanden.

  • #2
    Wieviel sind vorhanden, wenn du erst active auf true setzt und dann fragst wieviel Records drin sind?
    Christian

    Comment


    • #3
      genau soviele

      Comment


      • #4
        Du hast einen logischen Fehler drin, der aufgrund der Nutzung der Schleife entsteht:

        Nutze eine while Schleife, die die Rückgabewerte von findfirst und findnext auswertet

        while ("bool_dein_Wert" == true)
        Christian

        Comment


        • #5
          Das verstehe Ich nicht genau...

          Muss Ich das Eof brauchen von ADOTable1?

          Comment


          • #6
            Du musst eine while-Schleife programmieren, die nur solange läuft
            wie

            - ADOTable1->FindFirst()
            - ADOTable1->FindNext()

            true zurückgeben

            bool rt=false;

            rt=ADOTable1->FindFirst();
            while(rt){
            .....

            rt= ADOTable1->FindNext();
            }
            Christian

            Comment


            • #7
              Danke, aber gleiches Problem:

              Code:
              bool rt=false;
              rt=ADOTable1->FindFirst();
              
              while(rt)
              {
                 Memo1->Lines->Add("Toevoegen van een button");
                 fprintf(stream,"<TD><INPUT TYPE=BUTTON style=\"width:240;height:45\" OnClick=\"MM_goToURL('parent','%s')\" VALUE=\"%s\"></TD>",ADOTable1->Fields->FieldByName("bestand")->AsString,ADOTable1->Fields->FieldByName("titel")->AsString);
                 fprintf(stream,"\n");
                 fprintf(stream,"</br></br>\n");
                 fprintf(stream,"\n");
                 rt= ADOTable1->FindNext();
              
              }

              Comment


              • #8
                Wenn du alles neu erstellt hast.....dann weiss ich auch nicht mehr weiter
                Christian

                Comment


                • #9
                  Muss Ich nicht ADOQuery brauchen? Jetz brauch Ich ADOTable.

                  Comment


                  • #10
                    nein, dein ADOTable wird ja auf irgendwas beruhen
                    Christian

                    Comment


                    • #11
                      Gefunden!
                      Code:
                      aantal = ADOTable1->RecordCount;
                      
                      ShowMessage("Aantal buttons te maken " + IntToStr(aantal));
                      Memo1->Lines->Add("Aanmaken van body");
                      
                      ADOTable1->FindFirst();
                      
                      aantal--;
                      for(int x=0;x<=aantal;x++)
                      {
                         Memo1->Lines->Add("Toevoegen van een button");
                         fprintf(stream,"<TD><INPUT TYPE=BUTTON style=\"width:240;height:45\" OnClick=\"MM_goToURL('parent','%s')\" VALUE=\"%s\"></TD>",ADOTable1->Fields->FieldByName("bestand")->AsString,ADOTable1->Fields->FieldByName("titel")->AsString);
                         fprintf(stream,"\n");
                         fprintf(stream,"</br></br>\n");
                         fprintf(stream,"\n");
                         if(x!=aantal)
                            ADOTable1->FindNext();
                      
                      }
                      
                      Memo1->Lines->Add("Aanmaken van einde...");
                      fprintf(stream,"</body>\n");
                      fprintf(stream,"</html>\n");
                      
                      fclose(stream);

                      Danke Christian fur mit denken.

                      Comment


                      • #12
                        aantal--;

                        if(x!=aantal)
                        Ich weiss, aber es müsste mit dem boolschen Wert eben auch gehen, den so ist der Code einfach ungünstig
                        Christian

                        Comment

                        Working...
                        X