AGB  ·  Datenschutz  ·  Impressum  







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

Insert SQL

Ein Thema von Hansa · begonnen am 29. Jun 2003 · letzter Beitrag vom 16. Okt 2004
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11
  Alt 30. Jun 2003, 13:37
Zitat von Lemmy:
Im ersten Fall wirst Du doch sowieso die Daten des Lagers irgendwie in einer Tabelle anzeigen lassen, d.h. du hast schon eine TDataSet in Verwendung, die Du dann auch für die Neueingabe verwenden kannst.
Und wie soll ich das machen ? Was ist mit dem Dataset zu machen? Und was ist bei Zugängen von neuen Artikeln, wo halt gar kein Lagerbestand da ist, auch nicht mit Bestand=0?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#12
  Alt 30. Jun 2003, 14:30
Zitat von Hansa:
Und wie soll ich das machen ? Was ist mit dem Dataset zu machen? Und was ist bei Zugängen von neuen Artikeln, wo halt gar kein Lagerbestand da ist, auch nicht mit Bestand=0?
Warenwirtschaftstechnich kann es ja keinen Zugang von Artikeln geben die nicht im Programm erfasst sind.
Wenn also ein neuer Artikel angelegt wird, wird ersteinmal der Lagerbestand auf 0 gesetzt.

Wenn nun dieser Artikel im Wareneingang gebucht wird :

- erzeugst Du in deiner Lagerwebewegung-Tabelle einen Eintrag mit den Daten
- Änderst Du (wenn Du es denn möchtest) den Bestand in der Tabelle deiner Artikel.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#13
  Alt 30. Jun 2003, 14:31
Hi,

wir posten aneinander vorbei! Nochmal anders: Du musst doch irgendwo eingeben welche Artikel in Deinem Lager sind, oder? Dazu machst Du doch sicherlich ein Formular in dem der User neue Artikel anlegen kann, bzw. bei bestehenden Artikel die Menge editieren kann u. ä. Für dieses Formular wirst Du doch sicherlich eine TDataSet/TIBDataSet/TirgendwasDataSet verwenden um die Daten die schon erfasst sind, anzeigen zu lassen, d.h. Du setzt visuelle DB-Komponenten (TDBEdit, ....) auf das Formular und verbindest das mit der TDataSet.

So und jetzt kommen wir wieder zum eigentlichen Thema:

In diesem Szenario wirst Du der TDataSet in die SelectSQL-Eigenschaft so eine ähnliche SQL eingeben:

Code:
Select * from Lager;
Mit einem RMK (rechten Mausklick) kannst Du dann (zumindest bei IBX) einen Editor öffnen, in dem Du die Insert, Update, Delete und Refresh-SQL Statements automatisch erzeugen lassen kannst. Dann musst Du nur noch die TDataSet mit der Datenbank verbinden und schon kannst Du loslegen. In Diesem Fall sorgt die TDataSet selbst dafür, dass bei einem Aufruf der Methoden Insert/Edit/Post/Delete die entsprechende SQL die du eingegeben/erzeugt hast ausgeführt wird.

Nun zum großen Unterschied: Wenn du selbst einfach so ein Insert-Statement ausführen willst, ohne eine vorbereitete TDataSet zu haben (wie oben), dann musst Du das entsprechende SQL-Statement auch anders ausführen: entweder in einer TQuery (dann ist eigentlich alles klar) oder eben in einer TDataSet. Dann musst du das Statement eben in die SelectSQL eingeben und dann mittels ExecSQL ausführen. Da spielt es dann keine Rolle was in der Tabelle schon drinsteht, bzw. dass die Eigenschaft des TDataSet "SelectSQL" heißt obwohl Du eine Insert oder Delete-Anweisung eingibst. Denn diese SelectSQL wird bei ExecSQL verwendet und ausgeführt.

Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14
  Alt 30. Jun 2003, 19:28
Zitat von Sharky:
Warenwirtschaftstechnich kann es ja keinen Zugang von Artikeln geben die nicht im Programm erfasst sind. Wenn also ein neuer Artikel angelegt wird, wird ersteinmal der Lagerbestand auf 0 gesetzt.

Wenn nun dieser Artikel im Wareneingang gebucht wird :

- erzeugst Du in deiner Lagerwebewegung-Tabelle einen Eintrag mit den Daten
- Änderst Du (wenn Du es denn möchtest) den Bestand in der Tabelle deiner Artikel.
Eben, so ähnlich ist das. Kein Lager-Dataset: Insert, aktualisieren : Update und nun kommen die Datenmangen ins Spiel. Beim Insert ist eben keine da und beim Update muß die vorhandene angepaßt werden. Nur wie ?

@Lemmy: Deine Frage vorher habe ich nicht sofort verstanden. Es geht um nicht visuelle Sachen. Das soll hinter den Kulissen laufen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#15
  Alt 30. Jun 2003, 19:37
Zitat von Hansa:
Insert, aktualisieren : Update und nun kommen die Datenmangen ins Spiel. Beim Insert ist eben keine da und beim Update muß die vorhandene angepaßt werden. Nur wie ?
Wen Du Daten einfügen willst (z.B. einen Lagerartikel mit Art-Nr, Beschreibung, Menge etc), dann müssen dies Informationen selbstverständlich eingegeben werden.
Ich vermute mal Du meinst folgendes: Das Lager bekommt einen Zugang der Menge x des Artikels y:
  1. Überprüfen ob Artikel vorhanden - Select * from blabla where ArtNr = Y
  2. Erhältst Du keinen Datensatz -> Eingabemaske für Artikeldaten + Menge Zugang -> Anschließend Insert Into
  3. Erhälts Du einen Datensatz für den Artikel heißt das er ist schon auf Lager -> also Erfassung der Zugangsmenge -> Update blabla Set menge = vorhanden + zugang
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#16
  Alt 30. Jun 2003, 19:46
Zitat von r_kerber:
...Ich vermute mal Du meinst folgendes: Das Lager bekommt einen Zugang der Menge x des Artikels y:
  1. Überprüfen ob Artikel vorhanden - Select * from blabla where ArtNr = Y
  2. Erhältst Du keinen Datensatz -> Eingabemaske für Artikeldaten + Menge Zugang -> Anschließend Insert Into
  3. Erhälts Du einen Datensatz für den Artikel heißt das er ist schon auf Lager -> also Erfassung der Zugangsmenge -> Update blabla Set menge = vorhanden + zugang
Ja, das kommt der Sache schon recht nahe. Schlau werde ich aber immer noch nicht so recht. Wie mache ich das mit vorhanden und Zugang ? Und was ist mit den leeren Datenmengen? Was muß man da beachten ?
Gruß
Hansa
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#17

hmm,

  Alt 30. Jun 2003, 19:54
du prüfst ja eh mit select ob was da ist da kannst du dass vorhanden ja auch auslesen und dann den zugang addieren und wieder reinschreiben mit Update. Bei leeren Mengen musst du darauf achten ob die DBSpalte NULL sein darf oder auf NOT NULL steht.Achtung '' also ein Leerstring ist nicht NULL.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: hmm,

  Alt 30. Jun 2003, 20:00
Zitat von JoelH:
...Bei leeren Mengen musst du darauf achten ob die DBSpalte NULL sein darf oder auf NOT NULL steht.Achtung '' also ein Leerstring ist nicht NULL.
NULL <> 0, schon klar und wie soll ich es jetzt machen? Was ist, wenn das SELECT etwas liefert und was, wenn nicht ?
Gruß
Hansa
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#19

hmm,

  Alt 30. Jun 2003, 20:03
naja wenn halt die Zeile schon da ist recordcount > 0 dann UPDATE, ansonste INSERT
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: hmm,

  Alt 30. Jun 2003, 20:10
Zitat von JoelH:
naja wenn halt die Zeile schon da ist recordcount > 0 dann UPDATE, ansonste INSERT
Das geht einfacher mit
Code:
IsEmpty
nur mal so nebenbei bemerkt. 8) Lemmy hat mich mit seinen leeren Datenmengen trotzdem verwirrt. Lemmy, wo bist Du
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:05 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