AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

sql -> html

Ein Thema von mav · begonnen am 25. Aug 2004 · letzter Beitrag vom 30. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
mav

Registriert seit: 9. Jan 2004
98 Beiträge
 
Delphi 7 Personal
 
#1

sql -> html

  Alt 25. Aug 2004, 12:23
hi all

wiedermal bin ich es, welcher hier ein thread eröffned

ich bin am basteln html ausgabe mithilfe der IBQuery

Delphi-Quellcode:
procedure TFimexport.SpeedButton1Click(Sender: TObject);
begin
If SaveDialog1.Execute then
  IBQuery1.SQL.Text := 'SELECT mov_title, mov_genre FROM mov_db';
  IBQuery1.Open;
  while IBQuery1.Eof=false
  do begin
        TabList := TStringList.Create;
      Try

        TabList.Add('<html><head></head><body>');
        TabList.Add('<Table>');
        LineStr := '<tr>';
        For i := 0 To IBQuery1.RecordCount Do
        Begin
          LineStr := LineStr + '<td>[b]' + IBQuery1.Fields[i].DisplayLabel + '[/b]</td>
        End;
        TabList.Add(LineStr + '</tr>');
        LineStr := '';

        While Not Eof Do
        Begin
          LineStr := '<tr>';
          For i := 0 To IBQuery1.RecordCount Do
          Begin
            LineStr := LineStr + '<td>' + IBQuery1.Fields[i].asString + '</td>
          End;
          TabList.Add(LineStr + '</tr>');
          LineStr := '';
          Next;
        End;
        TabList.Add('</Table></body>');
        TabList.SaveToFile(SaveDialog1.FileName);

      Finally
        TabList.Free;
      End;
end;
end;
beim starten habe ich keine probleme.. jedoch wenn ich das html file speichern möchte.. bekomme ich folgende meldung:

Im Projekt html.exe ist eine Exception der Klasse EListError aufgetreten. Meldung: Listenindex überschreitet das Maximum (2)...

kann mir da wer nen tip geben?
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: sql -> html

  Alt 25. Aug 2004, 12:34
For i := 0 To IBQuery1.RecordCount Do sollte heissen ?

For i := 0 To IBQuery1.RecordCount-1 Do an beiden stellen ?

und

while IBQuery1.Eof=false wuerde ich aus gewohnheit in

while not IBQuery1.Eof ändern.
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#3

Re: sql -> html

  Alt 25. Aug 2004, 12:36
Hi,

in welcher Zeile tritt der Fehler denn auf?

Achja, folgendes könnte evtl. scho der Fehler sein:
Delphi-Quellcode:
For i := 0 To IBQuery1.RecordCount - 1 Do
{statt "For i := 0 To IBQuery1.RecordCount Do"}
Gruß
Stephan

{too late}
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
mav

Registriert seit: 9. Jan 2004
98 Beiträge
 
Delphi 7 Personal
 
#4

Re: sql -> html

  Alt 25. Aug 2004, 12:45
kann ich dir leider nicht sagen, in welcher zeile der fehler auftritt, das programm läuft ganz durch..
auch mit euren tips gings nicht .. dummes ding
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: sql -> html

  Alt 25. Aug 2004, 12:51
Hallo mav,

recordcount liefert bei einer IBQuery nicht immer die korrekte Zahl, da immer nur soviele Sätze abgerufen werden, wie angezeigt werden. Werden die Daten nicht angezeigt, wird zunächst nur 1 Datensatz geliefert. Das kannst du ändern, indem du nach Open noch:

IBQuery1.FetchAll einfügst. Aber ich glaube nicht, dass das Dein Problem mit dem Index löst. Das liegt vielleicht an dem EOF, du musst hier natürlich IBQuery1.EOF verwenden.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
mav

Registriert seit: 9. Jan 2004
98 Beiträge
 
Delphi 7 Personal
 
#6

Re: sql -> html

  Alt 25. Aug 2004, 12:57
jo.. das mit dem Eof habe ich auch bemerkt.. nütze aber leider auch nichts.. wie auch FetchAll nicht
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#7

Re: sql -> html

  Alt 25. Aug 2004, 13:01
Ooops, da habe ich ja gerade gesehen, dass du den Index i benutzt, um die Felder durchzugehen, aber dafür ist ja nicht RecordCount (Anzahl der Datensätze) sondern FieldCount zu verwenden.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
mav

Registriert seit: 9. Jan 2004
98 Beiträge
 
Delphi 7 Personal
 
#8

Re: sql -> html

  Alt 25. Aug 2004, 13:32
yeahh.. danke.. jetzt bekomme ich kein fehler mehr.. jedoch scheint mein progi jetzt abzustürzen wenn ich das file speichern möchte
also das progi reagiert nicht mehr.. und es erstellt auch keine datei
ich dreh noch durch
  Mit Zitat antworten Zitat
mav

Registriert seit: 9. Jan 2004
98 Beiträge
 
Delphi 7 Personal
 
#9

Re: sql -> html

  Alt 30. Aug 2004, 12:19
wenn ich bei diesem code die .html datei speichern möchte, stürzt das tool ab.. und generiert auch kein .html file

Delphi-Quellcode:
procedure TFimexport.SpeedButton1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
  IBQuery1.SQL.Text := 'SELECT mov_title, mov_genre FROM mov_db';
  IBQuery1.Open;
  IbQuery1.FetchAll;
  while not IBQuery1.Eof
  do begin
        TabList := TStringList.Create;
      try

        TabList.Add('<html><head></head><body>');
        TabList.Add('<Table>');
        LineStr := '<tr>';
        for i := 0 to IBQuery1.FieldCount-1
        do begin
          LineStr := LineStr + '<td>[b]' + IBQuery1.Fields[i].DisplayLabel + '[/b]</td>'
        end;
        TabList.Add(LineStr + '</tr>');
        LineStr := '';

        while not IBQuery1.Eof
        do begin
          LineStr := '<tr>';
          for i := 0 to IBQuery1.FieldCount-1
          do begin
            LineStr := LineStr + '<td>' + IBQuery1.Fields[i].asString + '</td>'
          end;
          TabList.Add(LineStr + '</tr>');
          LineStr := '';
          Next;
        end;
        TabList.Add('</Table></body>');
        TabList.SaveToFile(SaveDialog1.FileName);

      finally
        TabList.Free;
      end;
end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10

Re: sql -> html

  Alt 30. Aug 2004, 12:46
Hallo mav,

zwei ineinanderverschachtelte While Schleifen mit derselben Abbruchbedingung sind nicht sinnvoll. Die StringListe in einer While Schleife zu erstellen, erzeugt diese natürlich bei jedem Durchlauf. Die Einträge der davor erzeugten Liste sind dann auch nicht mehr zugreifbar. Aufgrund des ersten Fehlers der beiden ineinander geschachtelten While Schleifen, gibt es aber wohl nur einen Durchlauf durch die äußere Schleife, so dass der Fehler hier noch nicht zum Tragen kommt. Das Next in der inneren Schleife muss IBQuery1.Next heißen, nur dann wird der Datensatzzeiger auch weiterbewegt. Ansonsten hast du eine Endlosschleife.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz