AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

Ein Thema von Svenkan · begonnen am 11. Sep 2007 · letzter Beitrag vom 11. Sep 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 12:49
Hallo Leute,
und zwar möchte ich Vertretungspläne aufm Monitor anzeigen lassen.
Dafür sollen HTML-Dateien mit den jeweiligen Daten geschrieben werden, welche ich über den TWebBrowser anzeigen und weiterschalten lasse. Das funktioniert problemlos.
Aber: da nur X Zeilen (X festgelegt durch den Benutzer)/Seite draufpassen, muss ich nach X ja auch eine neue Datei schreiben lassen.
Und da hab ich Probleme mit.
Das ganze wird per TQuery ausgelesen.
Nur weiß ich grad nicht so ganz, wie ich das gebacken bekomme, dass ich dann eine neue Datei anfange und dann weiterschreiben lasse.
Hat da jemand ne Idee für ein Grundgerüst (mehr brauch ich nicht, da ich den Rest der Dateierstellung schon habe)? Denke ja mal, dass man das über Schleifen machen müsste..
Sven Kannenberg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 12:52
Welche Datenbank?
Wie erzeugst du die HTML-Datei?
Markus Kinzler
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 12:58
BDE.
Der Code ist jetzt erstmal noch sehr durcheinander, hab erst einmal die Funktion soweit zusammengebastelt, Optimierungen kommen noch. Also nicht zu sehr schimpfen. ^^


Delphi-Quellcode:
  AssignFile(Datei, (ExtractFilePath(ParamStr(0)) + '\monitor\vplan_'+wts+'_'+IntToStr(l_count)+'.htm'));
  Rewrite(Datei);
  a:='<html>'+sLineBreak+'<head>'+sLineBreak+'<title>Vertretungsplan '+schule+'</title>'+sLineBreak+'<meta http-equiv="expires" content="0">'+sLineBreak+'<link rel="stylesheet" href="vplan.css" type="text/css">'+sLineBreak+'</head>'+sLineBreak+'<body>'+sLineBreak+'<div class="vplan">';
  WriteLn(Datei, a);
  b:=sLineBreak+'<table cellpadding=2 cellspacing=1 border=0 width="98%" bgcolor="#000000">';
  WriteLn(Datei, b);
 if order_mon='KLASSENthen
  ba:=sLineBreak+'<tr>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tklasse+'</font></td>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tstunde+'</font></td>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tfehlt+'</font></td>'
 else
  ba:=sLineBreak+'<tr>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tstunde+'</font></td>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tklasse+'</font></td>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tfehlt+'</font></td>';
  WriteLn(Datei, ba);
  c:=sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tvertritt+'</font></td>'+sLineBreak+'<td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tfach+'</font></td>'+sLineBreak+'<td width=37% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+tbemerkung+'</font></td>'+sLineBreak+' <td width=9% class="tblhead">'+sLineBreak+'<font class="font_tblhead">'+traum+'</font></td>'+sLineBreak+'</tr>';
  WriteLn(Datei, c);

//Ab hier die Datensätze

 Query1.First;
 if Pred(Query1.RecordCount)=-1 then begin
   hcode:='<tr bgcolor="'+tdc1+'">'+sLineBreak+'<td colspan="7"><font color="'+fc1+'"> [b]Für '+wochentag+', den '+today+' ist kein Eintrag vorhanden![/b]</font></td>'+sLineBreak+'</tr>';
   WriteLn(Datei, hcode);
 end
 else begin
 while not Query1.EOF do begin
  for count := 0 to Pred(Query1.RecordCount) do begin
   if count mod 2 = 0 then begin
    tdcolor:=tdc1;
    fccolor:=fc1;
   end
   else begin
    fccolor:=fc2;
    tdcolor:=tdc2;
   end;

   if ((Query1.FieldByName('FUER').AsString='') AND (Query1.FieldByName('WERT').AsString='M') AND (Query1.FieldByName('ANZAHL').AsString='1')) then begin
     if (pos('fällt aus', Query1.FieldByName('BEMER_SCH').AsString)<>0) then begin
      fehlt1:='<font class="fehlt">'+Query1.FieldByName('WER').AsString+'</font>';
      fach1:='<font class="fehlt">'+Query1.FieldByName('FACH').AsString+'</font>';
      vertritt1:='';
    end
    else begin
      fehlt1:=Query1.FieldByName('WER').AsString;
      fach1:=Query1.FieldByName('FACH').AsString;
      vertritt1:=Query1.FieldByName('WER').AsString;
    end;
   end
   else begin
     if (pos('fällt aus', Query1.FieldByName('BEMER_SCH').AsString)<>0) then begin
      fehlt1:='<font class="fehlt">'+Query1.FieldByName('FUER').AsString+'</font>';
      vertritt1:='<font class="fehlt">'+Query1.FieldByName('WER').AsString+'</font>';
      fach1:='<font class="fehlt">'+Query1.FieldByName('FACH').AsString+'</font>';
     end
     else begin
      fehlt1:=Query1.FieldByName('FUER').AsString;
      vertritt1:=Query1.FieldByName('WER').AsString;
      fach1:=Query1.FieldByName('FACH').AsString;
     end;
   end;

  if order_mon='KLASSENthen begin
   if Query1.FieldByName(sklassen).AsString=Label13.Caption then klasse:=''
   else klasse:='[b]'+Query1.FieldByName(sklassen).AsString+'[/b]';
   Label13.Caption:=Query1.FieldByName(sklassen).AsString;
   stunde:=Query1.FieldByName('S').AsString+'.';
   if NOT baender then
    klasse:=Compress(klasse);
  end
  else begin
   if Query1.FieldByName('S').AsString=Label13.Caption then klasse:=''
   else klasse:=Query1.FieldByName('S').AsString+'.';
   Label13.Caption:=Query1.FieldByName('S').AsString;
   stunde:='[b]'+Query1.FieldByName(sklassen).AsString+'[/b]';
   if NOT baender then
    stunde:=Compress(stunde);
  end;

  if (NOT (vlehrer) AND NOT (vertritt1='<font class="fehlt"></font>') AND NOT (vertritt1='')) then
   vertritt1:='???';

  if NOT (raeume) AND NOT (Length(Query1.FieldByName('Raum').AsString)=0) then
   raum1:='?'
  else
   raum1:=Query1.FieldByName('Raum').AsString;

   hcode:='<tr bgcolor="'+tdcolor+'">'+sLineBreak+'<td width=9%><font color="'+fccolor+'" class="font_tblrow"> '+klasse+'</font></td>'+sLineBreak+'<td width=9%><font color="'+fccolor+'" class="font_tblrow"> '+stunde+'</font></td>'+sLineBreak+'<td width=9%><font color="'+fccolor+'" class="font_tblrow"> '+fehlt1+'</font></td>';
   WriteLn(Datei, hcode);
   hcode2:='<td width=9%><font color="'+fccolor+'" class="font_tblrow"> '+vertritt1+'</font></td>'+sLineBreak+'<td width=9%><font color="'+fccolor+'" class="font_tblrow"> '+fach1+'</font></td>'+sLineBreak+'<td width=37%><font color="'+fccolor+'" class="font_tblrow"> '+Query1.FieldByName('BEMER_SCH').AsString+'</font></td>'+sLineBreak+'<td width=9% bgcolor="'+tdcolor+'"><font color="'+fccolor+'" class="font_tblrow"> '+raum1+'</font></td>'+sLineBreak+'</tr>';
   WriteLn(Datei, hcode2);
   Query1.Next;
  end;
 end;
 end;
  f:='</table>'+sLineBreak+'</div>'+sLineBreak+'</body>'+sLineBreak+'</html>';
  WriteLn(Datei, f);
  CloseFile(Datei);
Sven Kannenberg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 13:22
-Wenn die Datenbank unterstützt kannst du mit Limitierung arbeiten.
-Zähle die Anzahl doch einfach und erzeuge die datei innerhalb der Schleife (z.B. durch Modula-Abfrage)
Markus Kinzler
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 14:01
Was isn eine Modula-Abfrage?
Sven Kannenberg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 14:24
Restabfrage

5 DIV 2 = 2
5 MOD 2 = 1 denn 5 - 2*2 = 1
Wenn also Modulo Datensatznummer MOD AnzahlDSproSeite dann Seite voll -> neues Blatt.
Markus Kinzler
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 15:20
Ach mod!
Sech det doch!
Habs jetz hinbekommen.
Eine Frage noch (wollt dafür net extra nen neuen Thread aufmachen): Wie startet man das Programm autom. maximiert?
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 16:15
Zitat von Svenkan:
(wollt dafür net extra nen neuen Thread aufmachen)
Solltest du aber ...

Form automatisch maximiert starten:
TForm hat die Eigenschaft WindowState, die man im Objektinspektor oder zur Laufzeit auf wsMaximized stellen kann.

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Nur bestimmte Anzahl SQL-Zeilen in Datei schreiben

  Alt 11. Sep 2007, 20:53
Ah, dankeschön!
Sven Kannenberg
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:10 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