AGB  ·  Datenschutz  ·  Impressum  







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

Smallint

Ein Thema von LOMBI · begonnen am 10. Dez 2004 · letzter Beitrag vom 14. Dez 2004
Antwort Antwort
LOMBI
(Gast)

n/a Beiträge
 
#1

Smallint

  Alt 10. Dez 2004, 09:52
Delphi3-Prof.+Paradox7-Tabellen
Anfänger



Hallo,

wer kann mir bitte helfen, für eine Adressen.db ein SmallInt herzustellen?

I= Interessent
IA=Interessent m. Angebot
NK=Neukunde (1xgekauft)
SK=Stammkunde
AK=Altkunde (über ein Jahr nichts mehr gekauft)

Gruß
Lombi
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Smallint

  Alt 10. Dez 2004, 09:56

Sollen wir dir jetzt sagen, dass du I mit 0, IA mit 1, NK mit 2, SK mit 3 und AK mit definieren sollst.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: Smallint

  Alt 10. Dez 2004, 12:20
Hallo LOMBI,

wenn du die Tabelle mit der Datenbankoberfläche erstellst, wählst du als Feldtyp S (=kleiner Integer).

Die Interprätation der Werte ist Aufgabe deines Programmes. Du kannst dir zur Übersichtlichkeit entsprechende Konstanten definieren:

Delphi-Quellcode:
Const
   knd_I = 0; // Interessent
   knd_IA = 1; // Interessent m. Angebot
   knd_NK = 2; // Neukunde (1xgekauft)
   knd_SK = 3; // Stammkunde
   knd_AK = 4; // Altkunde (über ein Jahr nichts mehr gekauft)

   // oder sogar
   knd_Interessent = 0;
   knd_Interessent_m_Angebot = 1;
   knd_Neukunde = 2;
   knd_Stammkunde = 3;
   knd_Altkunde = 4;
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#4

Re: Smallint

  Alt 10. Dez 2004, 12:35
Oder eine Aufzählung:

Delphi-Quellcode:
type
  EKundentyp = (
    INTERESSENT,
    INTERESSENTANGEBOT,
    NEUKUNDE,
    STAMMKUNDE,
    ALTKUNDE
  );
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#5

Re: Smallint

  Alt 13. Dez 2004, 17:50
Besten Dank für die Antworten.

ich möchte mit diesen Smallints ein automatisches Status-System in die Adressen.db integrieren. Der Nutzer gibt eine neue Adresse ein und das
erste Kürzel "I" erscheint automatisch im DBEdit-Feld für Status. Sobald
für diese Adresse ein Angebot geschrieben wurde, "IA" usw.

Wie wird bitte diese Automatik erzeugt?

Gruß
Lombi
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: Smallint

  Alt 14. Dez 2004, 12:16
Hallo Lombi,

mit Automatik ist da nix . Du solltest das AfterPost Event der Auftragstabelle benutzen, um den Status des Kunden zu prüfen und ggf. neu zu setzen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#7

Re: Smallint

  Alt 14. Dez 2004, 12:38
Was hat das ganze eigentlich mit Smallints zu tun?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: Smallint

  Alt 14. Dez 2004, 13:52
Hallo LOMBI,

zur Frage nach einem guten Buch zur Datenbankprogrammierung, könnte ich folgendes Buch vom ADDISON-WESLEY Verlag empfehlen. Es gibt sogar eine Leseprobe, so dass du prüfen kannst, was du davon hälst.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: Smallint

  Alt 14. Dez 2004, 13:59
Zitat von LOMBI:
wer kann mir bitte helfen, für eine Adressen.db ein SmallInt herzustellen?
Ich glaube Du hast das was verwechselt:

Ein SmalInt ist ein "kleiner" Integer. Also eine Ganzezahl ohne Kommastellen.

http://de.wikipedia.org/wiki/Integer

In der Delphi 7 Onlinehilfe steht
Ein Integer-Typ repräsentiert eine Untermenge der ganzen Zahlen. Es gibt zwei generische Integer-Typen: Integer und Cardinal. Diese Typen sollten, wenn möglich, immer verwendet werden, da sie die optimale Ausführungsgeschwindigkeit für die zugrundeliegende CPU und das Betriebssystem gewährleisten. Die nachfolgende Tabelle enthält die Bereiche und Speicherformate der generischen Integer-Typen für den aktuellen 32-Bit-Compiler von Delphi.

Generische Integer-Typen für 32-Bit-Implementationen von Delphi
Code:
Typ               Bereich          Format
Integer  -2147483648..2147483647    32 Bit, mit Vorzeichen
Cardinal           0..4294967295    32 Bit, ohne Vorzeichen
Zu den fundamentalen Integer-Typen gehören Shortint, Smallint, Longint, Int64, Byte, Word und Longword.

Fundamentale Integer-Typen
Code:
Typ               Bereich          Format
Shortint         -128..127          8 Bit, mit Vorzeichen
Smallint       -32768..32767        16 Bit, mit Vorzeichen
Longint   -2147483648..2147483647   32 Bit, mit Vorzeichen
Int64            -2^63..2^63-1       64 Bit, mit Vorzeichen
Byte                0..255          8 Bit, ohne Vorzeichen
Word                0..65535        16 Bit, ohne Vorzeichen
Longword            0..4294967295   32 Bit, ohne Vorzeichen
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Smallint

  Alt 14. Dez 2004, 14:41
Zitat von LOMBI:
wer kann mir bitte helfen, für eine Adressen.db ein SmallInt herzustellen?
I= Interessent
IA=Interessent m. Angebot
NK=Neukunde (1xgekauft)
SK=Stammkunde
AK=Altkunde (über ein Jahr nichts mehr gekauft)
Nach langem Nachdenken, glaube ich zu wissen was Du haben willst.

Kann es sein, dass Du eine Nachschlage Tabelle (Lookup Table) möchtest.

Du hast eine Haupttabelle (Master) mit z.B. folgenden Feldern:

Adressen.db

Adr_ID: Integer
Name: string(40)
Vorname: string(40)
Status_ID: Integer
Adresse: string(200)
...


Nun gibt es eine Nachschlagetabelle (Slave) mit folgenden Feldern:

Status.db

Status_ID: Integer
Status: string(2)
Status_Text: string(20)


In der Status Tabelle steht folgendes drin:
Code:
Status_ID Status  Status_Text
1          I       Interessent
2          IA      Interessent m. Angebot
3          NK      Neukunde (1xgekauft)
4          SK      Stammkunde
5          AK      Altkunde (über ein Jahr nichts mehr gekauft)
Es gibt nun die Möglichkeit in Delphi 2 Tabellen (TTable) so miteinander zu verknüpfen, dass automatisch der Status und der Status_Text statt der Status_ID (also des Integers) angezeigt wird.

Es gibt unzählige Möglichkeiten solch eine Verknüpfung herzustellen.

Eine Möglichkeit zur Anzeige in Grids (z.B. TDBGrid) ist:
  • 2 TTable auf das Formular
  • ein TDataSource auf das Formular
  • ein TDBGrid auf das Formular
  • die 2 Tables mit den Tabellen verbinden z.B.:
    Table1.Database := 'DBDEMOS'; Table1.TableName := 'Orders.db'; Table1.Active := True;
    Table2.Database := 'DBDEMOS'; Table1.TableName := 'Customers.db'; Table2.Active := True;
  • TDataSource mit Table1 verbinden z.B.:
    DataSource1.DataSet := Table1;
  • TDBGrid mit TDataSource verbinden z.B.:
    DBGrid1.DataSource := DataSource1;
  • Table1 (TTable) doppelklicken -> FeldEditor geht auf
  • Rechtsklick in Feldeditor und "Felder hinzufügen" auswählen
  • Anzuzeigende Felder auswählen z.B.:
    OrderNo, CustNo und SaleDate
  • nun wieder Rechtsklick in den FeldEditor und "Neues Feld" auswählen
  • Im "Neues Feld" Dialog das anzuzeigende Feld definieren z.B.:
    Feldeigenschaften.Name := Kunde; // Komponente wird automatisch zu Table1Kunde
    Feldeigenschaften.Typ := string;
    Feldeigenschaften.Größe := 20;
    Feldtyp := Nachschlagen;
    Nachschlage Definition.Schlüsselfelder := CustNo; // Index der Mastertabelle auf nachzuschlagendes Feld
    Nachschlage Definition.Datenmenge := Table2; // die Nachschlagetabelle
    Nachschlage Definition.Schlüssel := CustNo; // das Feld der Nachschlagetabelle was dem Schlüsselfeld in Table1 entspricht
    Nachschlage Definition.Ergebnis := Company; // Das Feld was Angezeigt werden soll
  • Fertig -> Im Grid werden nun die Felder OrderNo, CustNo, SaleDate und Kunde angezeigt.
    Das Feld Kunde entspricht dem Kunden der unter CustNo in Tabelle Customers.db abgelegt ist.

Das bringt aber nur etwas bei der Anzeige.

Zum Eingeben verwenden Sie am besten die TDBLookupComboBox.
Das ist eine ComboBox, die in die mit DataSource verbundene Tabelle einen Integer abspeichert.
Aber aus der mit ListSource verbundenen Tabelle das unter ListField anzeigt.
Einfach mal F1 drücken und die Hilfe zu der Komponente lesen

Ich hoffe dieser Artikel hilft weiter
Viel Spaß
Dr. MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  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 07:19 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