Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CreateTable / Felddefinitionen fehlen (https://www.delphipraxis.net/9340-createtable-felddefinitionen-fehlen.html)

schmiddi 24. Sep 2003 15:34


CreateTable / Felddefinitionen fehlen
 
Hallo,

erzeuge zur Laufzeit mit CreateTable (Delphi3, BDE 5,11, DBase) eine Datenbanktabelle. Auf manchen Rechnern jedoch werden die Felddefinitionen (Feldtyp (numeric), Feldlänge (16) und Nachkommastellen (2)) nicht erzeugt.
Hat jemand schon ähnliche Erfahrungen gemacht oder/und weiß, wodurch das passiert?
Wie gesagt, es läuft auf den meisten Rechnern rund, doch auf manchen eben nicht. Dabei scheint weder das Betriebssystem noch die Version der BDE eine Rolle zu spielen.

Danke und Gruß
Ralf

Memo 24. Sep 2003 19:18

Re: CreateTable / Felddefinitionen fehlen
 
Zitat:

Zitat von schmiddi
erzeuge zur Laufzeit mit CreateTable (Delphi3, BDE 5,11, DBase) eine Datenbanktabelle. Auf manchen Rechnern jedoch werden die Felddefinitionen (Feldtyp (numeric), Feldlänge (16) und Nachkommastellen (2)) nicht erzeugt.

Was wird stattdessen erzeugt? Gar nichts oder Fehler?

Zitat:

Zitat von schmiddi
Wie gesagt, es läuft auf den meisten Rechnern rund, doch auf manchen eben nicht. Dabei scheint weder das Betriebssystem noch die Version der BDE eine Rolle zu spielen.

Schau doch mal nach den Einstellungen in der BDE: Konfiguration->System->Formate->Number. Evt. liefert es einen Anhaltspunkt.
Denn wenn es sonst geht und nur auf bestimmten Rechnern nicht :?:

schmiddi 24. Sep 2003 20:09

Re: CreateTable / Felddefinitionen fehlen
 
Zitat:

Was wird stattdessen erzeugt? Gar nichts oder Fehler?
Das Feld wird erzeugt, allerdings ohne jegliche Definitionen. Also rein der Feldname wird angelegt. Eine Fehlermeldung kommt beim Erstellen laut Kunden nicht, aber beim Versuch die Tabelle zu öfnnen.


Zitat:

Schau doch mal nach den Einstellungen in der BDE: Konfiguration->System->Formate->Number. Evt. liefert es einen Anhaltspunkt.
Denn wenn es sonst geht und nur auf bestimmten Rechnern nicht
Leider taucht das Problem auf keinem meiner Testrechner auf, lediglich bei ein paar Anwendern, auf deren Rechner ich natürlich (leider) selbst keinen Zugriff habe. Dann werde ich das wohl mal von den Usern selbst überprüfen lassen. Obwohl die BDE dort immer neu installiert wurde und ich auf meinem Rechner an den von dir genannten Einstellungen auch schon mal "herumegschraubt" hatte, um einen Fehler zu provozieren. Aber egal was ich einstelle, bei mir werden die Tabellen stets exakt erstellt.

Danke jedenfalls erstmal
Gruß
Ralf

MrSpock 24. Sep 2003 20:59

Re: CreateTable / Felddefinitionen fehlen
 
Hallo Schmiddi,

zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum.

Dieser Fehler hört sich wirklich ungewöhnlich an. Eine Felddefinition ohne Typ habe ich noch nie gesehen.

Vielleicht können weitere Infos einen Anhalt liefern:

1. Nutzt du die TTable Komponente von Delphi oder irgendeine andere?
2. Wie erstellst du die Tabellendefinition?
3. Wird die Tabelle immer lokal oder im Netz erzeugt?
4. Überprüfst du, ob die Tabelle schon existiert, bevor du sie erzeugst?

Poste doch einfach mal ein Codeschnipsel dazu.

schmiddi 24. Sep 2003 21:14

Re: CreateTable / Felddefinitionen fehlen
 
Hier also die Prozedur, mit der ich die Tabellen erstelle.
Table_name wird beim Aufruf der Prozedur übergeben ...

Delphi-Quellcode:
procedure CreateNewTable(table_name:string);
var query1:tquery;
begin

     if fileexists (extractfiledir(Application.ExeName)+'\Daten\'+table_name) then
     //If Application.MessageBox(pchar('Beim Versuch die Artikeltabelle "' +table_name+'" zu erstellen ist ein Fehler aufgetreten.'+#10+'Die Datei ist bereits vorhanden und kann somit nicht neu erstellt werden.'), 'Fehler', MB_OK+MB_ICONEXCLAMATION+MB_DEFBUTTON1+MB_APPLMODAL) = ID_OK Then
     exit;

     try
     query1:=tquery.create(application.MainForm);
     query1.Close;
     query1.SQL.Clear;
     query1.SQL.add('CREATE TABLE "'+ (extractfiledir(Application.ExeName)+'\Daten\' +table_name)+'"'+
                    '(ARTNR     CHAR(20),'+
                    ' BEZEICHN  CHAR(60),'+
                    ' BEGINN    DATE,'+
                    ' NAME      CHAR(50),'+
                    ' STRASSE   CHAR(50),'+
                    ' ORT       CHAR(50),'+
                    ' EK        NUMERIC(16,2),'+  [b][color=#f50000]<----[/color][/b]
                    ' VK        NUMERIC(16,2),'+  [b][color=#f50000]<----[/color][/b]
                    ' INFOS     Blob)');
     query1.Prepare;
     query1.ExecSQL;
[edit=MrSpock]Code Tags hinzugefügt Mfg, MrSpock[/edit]

MrSpock 25. Sep 2003 13:33

Re: CreateTable / Felddefinitionen fehlen
 
Hallo Schmiddi,

ich konnte das Verhalten nachvollziehen und hab eine Lösung gefunden. Ich weiß aber nicht, warum die BDE NUMERIC(x,y) und FLOAT(x,y) nicht mag. Sie mag aber DECIMAL(x,y). Das funktioniert und erzeugt Numerisch Felder (F in der Datenbankoberfläche).

schmiddi 25. Sep 2003 20:20

Re: CreateTable / Felddefinitionen fehlen
 
Zitat:

Hallo Schmiddi,

ich konnte das Verhalten nachvollziehen und hab eine Lösung gefunden. Ich weiß aber nicht, warum die BDE NUMERIC(x,y) und FLOAT(x,y) nicht mag. Sie mag aber DECIMAL(x,y). Das funktioniert und erzeugt Numerisch Felder (F in der Datenbankoberfläche).
Hallo Mr. Spock,

danke für den Tipp - werde es gleich mal versuchen.

Was ich finden konnte ist, dass der Wert bei "Level" in der BDE-Verwaltung eine Rolle spielt. Bei "7" tritt zum Beispiel das Problem auf. Mit Level "4" läuft's rund ...

Netter Gruß
Ralf


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz