AGB  ·  Datenschutz  ·  Impressum  







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

ZEOS select

Ein Thema von jangbu · begonnen am 26. Mär 2012 · letzter Beitrag vom 27. Mär 2012
Antwort Antwort
Seite 2 von 2     12   
Perlsau
(Gast)

n/a Beiträge
 
#11

AW: ZEOS select

  Alt 26. Mär 2012, 18:00
Es kann ja immerhin sein, dass die Spaltenanzahl ZEOS-intern als Byte definiert ist.
Ist sogar ziemlich wahrscheinlich: The Maximum Number of Columns Per Table

Da gehen halt nur 256 (obwohl eigentlich 255?) rein, was normalerweise dicke ausreichen sollte.
Wieso 255? Ein Byte kann Werte 0 bis 255 annehmen, also 256 ...

Ausreichen sollte es in der Tat. Aber wenn er nun mal eine Tabelle mit über 500 Feldern hat und die so benötigt, muß er sich wohl anders behelfen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#12

AW: ZEOS select

  Alt 26. Mär 2012, 18:07
Der Maximalwert von Byte ist aber nunmal 255, deshalb meine Verwunderung. Kann man eigentlich Tabellen ohne Spalten anlegen? Wenn nicht (sowas versuch ich ja gar nicht erst), dann wird wohl intern die 0 als 1 interpretiert, somit wäre alles klar.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: ZEOS select

  Alt 26. Mär 2012, 18:10
Ja aber der Wertebereich ist von 0 -255 als 256 Werte (Felder)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

AW: ZEOS select

  Alt 26. Mär 2012, 18:16
Achso, wenn das der Spaltenindex ist, klar. Ich war gedanklich bei einer Anzahl, was bei genauerer Überlegung ja auch Quatsch wäre.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#15

AW: ZEOS select

  Alt 26. Mär 2012, 19:50
... die Probleme die ich beim update,select habe mit der Anzahl der Datenbankfelder zu tun haben ...
Ich hab jetzt mal kurz in einer MySQL-Testtabelle 800 Felder vom Typ INT angelegt. Die werden im DBGrid korrekt angezeigt ... Ich kann dein Problem nicht nachvollziehen ...

MySQL-Version: 5.5
Zeos-Version: 7.0.0-dev
Delphi-Version: 2009 pro
Windows-Version: XP Pro
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

AW: ZEOS select

  Alt 26. Mär 2012, 19:53
Das könnte am 7er ZEOS liegen, da soll sich ja einiges getan haben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#17

AW: ZEOS select

  Alt 26. Mär 2012, 20:03
Das könnte am 7er ZEOS liegen, da soll sich ja einiges getan haben.
Leider hat der TE nicht angegeben, welche ZEOS-Version er verwendet. Dabei kann man sich zahlreiche Komponenten via SVN automatisch aktuell halten.

@jangbu: Bastel dir doch mal ein kleines Testprogramm und probiere selber aus, wo die Grenzen liegen. Vor allem aber solltest du bei Fremdkomponenten nach Möglichkeit immer die neuesten Releases einsetzen.

Mein kleines Testprogramm:

Delphi-Quellcode:
unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, JvExDBGrids, JvDBGrid, ComCtrls;

type
  TFormMain = class(TForm)
    Button_Tabellen: TButton;
    ListBox_Tabellen: TListBox;
    Button_Anlegen: TButton;
    ListBox_Spalten: TListBox;
    DBGrid1: TDBGrid;
    Button_FelderDel: TButton;
    UD_Anzahl: TUpDown;
    Edit_Anzahl: TEdit;
    procedure Button_TabellenClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button_AnlegenClick(Sender: TObject);
    procedure Button_FelderDelClick(Sender: TObject);
  private { Private-Deklarationen }
  PROCEDURE TabellenNamen;
  public { Public-Deklarationen  }
  end;

var
  FormMain: TFormMain;

implementation
{$R *.dfm}

USES
    UnitData;

VAR
   Pfad : String;

procedure TFormMain.FormActivate(Sender: TObject);
begin
     Pfad := ExtractFilePath(ParamStr(0));
     DatMod.ZCon.Connect;
     IF NOT DatMod.ZCon.Connected THEN
     BEGIN
          ShowMessage('keine Verbindung');
     END;
     DatMod.ZTab_Test.Active := TRUE;
     TabellenNamen;
end;

PROCEDURE TFormMain.TabellenNamen;
BEGIN
     DatMod.ZCon.GetTableNames('test',ListBox_Tabellen.Items);
     DatMod.ZTab_Test.Close;
     DatMod.ZTab_Test.Open;
     DatMod.ZTab_Test.GetFieldNames(ListBox_Spalten.Items);
END;

// Tabelle erweitern
procedure TFormMain.Button_AnlegenClick(Sender: TObject);
VAR
   i,A,Z : Integer;
   Datei,
   Aus : String;
begin
     A := ListBox_Spalten.Count;
     Z := A + UD_Anzahl.Position -1;
     Datei := Pfad + 'Alter.txt';
     DatMod.ZQuery1.SQL.Clear;
     DatMod.ZQuery1.SQL.Append('ALTER TABLE test.testtabelle');

     FOR i := A TO Z DO
     BEGIN
          Aus := IntToStr(i);
          IF i < 100 THEN Aus := '0' + Aus;
          IF i < 10 THEN Aus := '0' + Aus;
          IF i = Z THEN
             Aus := 'ADD Spalte_' + Aus + ' FLOATELSE
             Aus := 'ADD Spalte_' + Aus + ' FLOAT,';
          DatMod.ZQuery1.SQL.Append(Aus);
     END;

     // DatMod.ZQuery1.SQL.SaveToFile(Datei);

     DatMod.ZQuery1.ExecSQL;

     TabellenNamen;
     ShowMessage(IntToStr(Z - A + 1) + ' neue Spalten angelegt');
end;

// Spalten löschen
procedure TFormMain.Button_FelderDelClick(Sender: TObject);
VAR
   i,A : Integer;
   Aus : String;

begin
     A := ListBox_Spalten.Count -1;
     DatMod.ZQuery1.SQL.Clear;
     DatMod.ZQuery1.SQL.Append('ALTER TABLE test.testtabelle');

     FOR i := 1 TO A DO
     BEGIN
          Aus := ListBox_Spalten.Items[i];
          IF i = A THEN
             DatMod.ZQuery1.SQL.Append('DROP ' + Aus) ELSE
             DatMod.ZQuery1.SQL.Append('DROP ' + Aus + ',');
     END;
     DatMod.ZTab_Test.Close;
     DatMod.ZQuery1.ExecSQL;

     TabellenNamen;
     ShowMessage('Alle Spalten bis auf Spalte_000 gelöscht');
end;

procedure TFormMain.Button_TabellenClick(Sender: TObject);
begin
     TabellenNamen;
end;

end.
Bei 990 Spalten, wobei die letzten 290 vom Typ FLOAT sind, war dann aber Schluß. Ich vermute daher, daß der für eine einzige Tabellendefinition verfügbare Speicher begrenzt ist ...

Nun hab ich mir noch die Mühe gemacht und eine Lösch-Methode geschrieben, nach deren Ausführung ich ohne Probleme 900 Felder vom Typ FLOAT in meiner Testtabelle anlegen konnte, die ebenfalls alle korrekt angezeigt werden ... Also ich weiß nicht ...

Geändert von Perlsau (26. Mär 2012 um 20:24 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#18

AW: ZEOS select

  Alt 26. Mär 2012, 20:50
Ungeachtet der Testreihen hier zu "wie viele Spalten gehen denn?" ist der Hinweis von p80286 das einzig vernünftige. (Exakt so protokollieren wir übrigens auch Messwerte die wir aus SPSen fischen ). Nur nicht den Index auf Datum und die Messtellen-ID vergessen, sonst wird's Suchen/Selecten darin nach ein paar zig Monaten recht gemütlich. Das ist dann flott, handlich, nicht so grenzenanfällig und zudem wohlgeformt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#19

AW: ZEOS select

  Alt 26. Mär 2012, 21:01
Ungeachtet der Testreihen hier zu "wie viele Spalten gehen denn?" ist der Hinweis von p80286 das einzig vernünftige.
Vernünftig hin oder her, man bekommt als Entwickler nicht selten alte Systeme aus dem letzten Jahrhundert vorgesetzt, um dort irgend eine Erweiterung einzubauen oder Anpassung vorzunehmen. Meist dürfen vorhandene Datenstrukturen dabei nicht verändert bzw. verbessert werden, weil der Kunde das aus diversen Gründen nicht möchte (gewöhnlich aus Kostengründen). Dann bleibt dir nichts anderes übrig, als entweder den Auftrag abzulehnen (was ich meistens mache, wenn's darum geht, alte BDE-Applikationen zu erweitern) oder eben in den sauren Apfel zu beißen (wenn's entsprechend gut entlohnt wird bzw. Aussicht besteht, überhaupt Geld dafür zu bekommen).

Meine "Testreihen" dienten vor allem als Beleg dafür, daß der vom TE genannte Fehler nicht an irgend einer Begrenzung von MySQL oder Zeos liegt. Ich habe das gemacht, weil ich's genau wissen wollte. Dagegen ist doch hoffentlich nichts einzuwenden ...
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#20

AW: ZEOS select

  Alt 27. Mär 2012, 00:31
Ist es nicht, und ich kenne die von dir beschriebenen Situationen zu Genüge. Da ich aber befürchtete, dass der Hinweis auf die "best-practice" im letzten Beitrag auf der Seite versupmft, wollte ich das nur nochmals hervor heben. Gegebenenfalls besteht ja die Möglichkeit des Umbaus für den TE, oder es ist ein Tipp für sein nächstes Projekt, oder irgend jemandem, der den Thread in 2-4 Jahren hier mal mit einem ähnlichen Problem liest, ist mit etwas Glück früh genug geholfen es gleich richtig zu machen. Dagegen ist hoffentlich auch nichts einzuwenden
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:53 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