Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Paradox-Feldtypen zuweisen (https://www.delphipraxis.net/69269-paradox-feldtypen-zuweisen.html)

LOMBI 12. Mai 2006 18:00

Datenbank: Paradox • Version: 7 • Zugriff über: Query, DataSource

Paradox-Feldtypen zuweisen
 
Hallo,

könnt Ihr bitte mal sehen, ob ich die richtigen Feldtypen gewählt habe:

Feldname Typ

MwSt N
EAN N
EKpreis $
VKnetto $
VKbrutto $
Anfangsbest N
Abgang N

Vielen Dank!

Gruß
Lombi

Dax 12. Mai 2006 18:03

Re: Paradox-Feldtypen zuweisen
 
N? $? :gruebel:

MrSpock 12. Mai 2006 18:08

Re: Paradox-Feldtypen zuweisen
 
Hallo Lombi,

als Bestand und Abgang könntest du wohl besser I(nteger) nehmen. Ansonsten ist N(umerisch) und $(Währung) wohl OK.

LOMBI 12. Mai 2006 19:31

Re: Paradox-Feldtypen zuweisen
 
Hallo MrSpock,

das Problem ist, dass ich nach dem Compillieren für einige der Felder
Meldungen erhalte, wie z.B.:
'EditEAN' ist kein gültiger Fließkommawert für Feld 'EAN'

Was stimmt denn bei den folgenden Codes nicht?

Delphi-Quellcode:
...
QArtikel.FieldByName('EAN').AsString := EditEAN.Text //n(umerisch)?
QArtikel.FieldByName('MwST').AsString := CBMwSt.Text //n(umerisch)?
QArtikel.FieldByName('EKPreis').AsString := EditEKPreis.Text //$(Währung)?
QArtikel.FieldByName('VKnetto').AsString := EditVKPreis.Text //$ (Währung)?
QArtikel.FieldByName('Anfangsbestand').AsInteger := EditAbest.Text //I(nteger)?
...
Danke für die Hilfe!

Gruß
Lombi

marabu 12. Mai 2006 20:09

Re: Paradox-Feldtypen zuweisen
 
Hallo Lombi,

wenn du Feldkomponenten eines BDE DataSets mit Werten belegst, dann solltest du die passende property verwenden - Currency-Werte (nicht BCD) werden so zugewiesen:

Delphi-Quellcode:
var
  dValue: Double;
begin
  if TryStrToFloat(EditEKPreis.Text, dValue)
    then QArtikel.FieldByName('EKPreis').AsFloat := dValue
    else QArtikel.FieldByName('EKPreis').Clear;
Ob die EAN nicht besser als String gespeichert wird?

Grüße vom marabu

LOMBI 13. Mai 2006 11:14

Re: Paradox-Feldtypen zuweisen
 
Hi marabu,

wie bitte werden numerische Felder zugewiesen? .AsString?
'EAN' habe ich auf (A)lphanumerisch geändert.

Erhalte leider immer noch Fehlermeldungen:
undefinierter Bezeichner:'TryStrToFloat'
Ungültiger Wert für Feld 'MwSt'
'EditABest' ist kein gültiger Integerwert für Feld 'Anfangsbestand'

Hab's bei den Mengen auch schon ohne Erfolg mit (N)umerisch versucht!

Viele Grüße
Lombi

eddy 13. Mai 2006 13:37

Re: Paradox-Feldtypen zuweisen
 
Hallo LOMBI,

bei Dir herrscht wohl noch ein bisschen Caos bezüglich der Datentypen.

N Numerisch tab.FieldByName('MwSt').AsFloat := 16.0;
tab.FieldByName('MwSt').AsFloat := StrToFloat('16.0');

I Integer tab.FieldByName('Bestand').AsInteger := StrToInt(editBestand.Text);
L Logisch tab.FieldByName('logik').AsBoolean := 'falsch'; // oder 'wahr'
A Alphanumer. tab.FieldByName('Suchtext').AsString := EditSuchtext.Text;

Währungsfelder verwende ich nicht, da bevorzuge ich den Typ N

Bestand kann auch vom Typ N sein, wenn Nachkomma-Werte vorkommen dürfen z.B. Bestand = 30.5 Meter

mfg
eddy

MrSpock 13. Mai 2006 14:06

Re: Paradox-Feldtypen zuweisen
 
Hallo eddy,

da hat sich noch ein Fehler eingeschlichen:

Delphi-Quellcode:
{L Logisch}
 tab.FieldByName('logik').AsBoolean := False; // oder True ohne Anführungsstriche

marabu 13. Mai 2006 15:17

Re: Paradox-Feldtypen zuweisen
 
Hallo Lombi,

eventuell gibt es die Funktion TryStrToFloat() unter D3 nicht - hier ein preiswerter Ersatz:

Delphi-Quellcode:
function TryStrToFloat(const S: string; out Value: Extended): Boolean;
var
  code: Integer;
begin
  Val(S, Value, code);
  Result := Code = 0;
end;
Grüße vom marabu

raiguen 14. Mai 2006 18:10

Re: Paradox-Feldtypen zuweisen
 
Moin :-)
@marabu: Deine Funktion wird bei der deutschen Schreibweise eines Gleitkommawertes (23,456)immer FALSE zurückgeben ;-)
Die Funktion müsste dann etwas umgeändert werden:
Delphi-Quellcode:
function TryStrToFloat(S: string; out Value: Extended): Boolean;
var
  code: Integer;
begin
  //--Komma durch Punkt ersetzen
  S:= StringReplace(S, ',','.',[]);
  Val(S, Value, code);
  Result := (Code = 0);
end;
oder diese Funktion benutzen:
Delphi-Quellcode:
function IstGleitkommazahl(S: String; out Value: Extended): Boolean;
begin
  Result := TextToFloat(PChar(S), Value, fvExtended);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.
Seite 1 von 2  1 2      

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