AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi INSERT INTO sonst UPDATE!
Thema durchsuchen
Ansicht
Themen-Optionen

INSERT INTO sonst UPDATE!

Ein Thema von Peeters · begonnen am 14. Apr 2005 · letzter Beitrag vom 20. Okt 2005
Antwort Antwort
Seite 2 von 3     12 3      
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: INSERT INTO sonst UPDATE!

  Alt 15. Apr 2005, 18:34
Nein, so meinte ich das nicht. Der Anwender soll gerade nicht die SP erstellen. Ich möchte in Delphi eine SP programmieren und diese dann an den Server übermitteln. Das Thema SP ist für mich noch neu, ich muss mich also noch zurecht finden bzw. anhand von Beispielen diese ausarbeiten.
Peeters
  Mit Zitat antworten Zitat
Hansa

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

Re: INSERT INTO sonst UPDATE!

  Alt 15. Apr 2005, 18:50
War zu erwarten. 8) Aber ich sage dir gleich : die SP liegt in der Datenbank und nicht in Delphi Also mußt du dich entscheiden, ob du nun einen Nagel mit einem Schraubenzieher (Delphi) in die Wand haust oder mit dem geeigneten Werkzeug.
Gruß
Hansa
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: INSERT INTO sonst UPDATE!

  Alt 15. Apr 2005, 18:54
Das die SP in der Datenbank liegt ist klar. Nur wie bekomme ich Sie dort rein ohne Hilfsmittel wie SQL Query Analyzer?
Peeters
  Mit Zitat antworten Zitat
Hansa

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

Re: INSERT INTO sonst UPDATE!

  Alt 15. Apr 2005, 19:27
Zitat von Peeters:
..ich Sie dort rein ohne Hilfsmittel wie SQL Query Analyzer?
Sage doch der Datenbank, daß der Editor sie heute noch kurz vorbei bringt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#15

Re: INSERT INTO sonst UPDATE!

  Alt 15. Apr 2005, 19:39
Hihi, ob ich es noch erlebe, dass jemand Hansas Beiträge versteht?

@Peeters
Was dir Hansa auf seine so direkte und unglaublich unmissverständliche Art ( ) sagen will, ist, dass du die Prozedur mit einer IDE für deine DB entwickeln solltest.
Wenn sie passt kannst du den Code imme noch dynamisch per Delphi absetzen.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#16

Re: INSERT INTO sonst UPDATE!

  Alt 15. Apr 2005, 20:19
Wenn du den Code zum Erstellen der Stored Procedure aus Delphi absetzt, dann solltest du vorder prüfen ob diese eventuell schon in der DB existiert.
Das geht so ...


SQL-Code:
  IF EXISTS (SELECT Name FROM SysObjects
                   WHERE Name = 'Meine_SP
                         AND
                         TYPE = 'P') -- P = Stored Procedure ...
       BEGIN
         ALTER PROCEDURE ... -- Procedure in DB aktualisieren
       END
       ELSE BEGIN
         CREATE PROCEDURE ... -- Procedure in DB erstellen
       END
Den SQL Code kannst du bequem über TAdoCommand an den MSSQL schicken.
Zu beachten ist jedoch, das der User, der diesen Code aus deinem Programm an den SQL-Server sendet, das Recht zum Erstellen, Ändern und Löschen von Datenbankobjekten hat. Jeder darf das nicht ...

[Zusatz]

Hier noch eine komplette Liste der TYPE Kennungen in SYSOBJECTTS ...
Falls mal jemand einen anderen Objekttyp suchen möchte ...

Objekttyp. Kann einer der folgenden Objekttypen sein:
C = CHECK-Einschränkung
D = Standard- oder DEFAULT-Einschränkung
F = FOREIGN KEY-Einschränkung
L = Protokoll
FN = Skalarfunktion
IF = Inlinetabellenfunktion
P = Gespeicherte Prozedur
PK = PRIMARY KEY-Einschränkung (Typ ist K)
RF = Gespeicherte Replikationsfilterprozedur
S = Systemtabelle
TF = Tabellenfunktion
TR = Trigger
U = Benutzertabelle
UQ = UNIQUE-Einschränkung (Typ ist K)
V = Sicht
X = Erweiterte gespeicherte Prozedur

[/Zusatz]


  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: INSERT INTO sonst UPDATE!

  Alt 18. Apr 2005, 18:47
Delphi-Quellcode:
CREATE PROCEDURE SP_IMPORT_FORM
@FormNr VARCHAR(5) = NULL
AS
IF @FormNr < 10000
BEGIN
SELECT * FROM MPK_FORM WHERE FORMNR = @FormNr
END
ELSE
BEGIN
SELECT * FROM MPK_PREIS WHERE FORMNR = @FormNr
END
GO
Habe mal diese kleine SP geschrieben. Frage dazu, warum gibt er mir keine Datensätze raus? Bei beiden Varianten gibt es min. einen Datensatz.

P.S.: Welches Buch könnt Ihr empfehlen in bezug auf Delphi, ADO und MS-SQL?
Peeters
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#18

Re: INSERT INTO sonst UPDATE!

  Alt 18. Apr 2005, 20:51
Hast du deine SP schon mal in einem SQL Editor (Query Analyzer, OSQL o.Ä) ausprobiert ?
SQL-Code:
  EXEC SP_IMPORT_FORM @FormNr= '1234'
  GO
Kommen dann die gewünschten Daten ?

- Wenn ja, nehme ich an, das du dich an meinem obigen Beispiel origentiert hast, um die SP aus Delphi heraus auszuführen ... Im Unterschied zu INSERT oder UPDATE soll die SP jetzt ja Datensätze zurückliefert. Dann musst du anstatt ExecProc "Open" und "Close" verwenden wie bei jedem anderen Dataset, von dem Du eine Result-Datenmenge erwartest, auch ...

- Wenn nicht dann teste mal die beiden Select's per Hand aus und schau mal wo es klemmt ...

Wirklich gute Bücher habe ich auch noch nicht gefunden. Entweder sind sie zu oberflächlich oder es sind reine Syntax Referenzen. Kapitel wie Optimierung, Troubleshooting usw fehlen oft ganz ...

Beim MSSQL kannst du im MSDN recht gute Erklärungen finden oder im Entwicklerforum oder hier in der DP

  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: INSERT INTO sonst UPDATE!

  Alt 18. Apr 2005, 23:13
Ich habe das mit einen DBGrid an Datasource und das an ADOSP gehangen. Mit

Delphi-Quellcode:
CREATE PROCEDURE SP_IMPORT_FORM
AS
SELECT * FROM MPK_FORM
GO
hat er eine Ergebnissmenge angezeigt. Nur jetzt mit der "IF" Variante kommt nichts mehr raus. Am Grid erkenne ich das er wenigstens die Feldnamen ausgelesen hat.
Peeters
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#20

Re: INSERT INTO sonst UPDATE!

  Alt 18. Apr 2005, 23:55
Könnte ein Problem bei der Parameterübergabe sein.
Wann und wie füllst du @FormNr mit einen Wert ?

Versuch es mal so ...

Delphi-Quellcode:
Procedure TForm1.button1Click(Sender:TObject);
begin
    ADOSP.Close;
    ADOSP.Procedurename='SP_IMPORT_FORM ';
    ADOSP.Parameters.refresh;
    ADOSP.Parameters[1].value:='EIN_GÜLTEGER_WERT_FÜR_@FORMNR';
    ADOSP.Open;
end;
  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 03:36 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