Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi GUID Parameterübergabe ADOQuery (https://www.delphipraxis.net/161896-guid-parameteruebergabe-adoquery.html)

WizoHulk 26. Jul 2011 13:41

Datenbank: MS Server • Version: 2008 • Zugriff über: ADO

GUID Parameterübergabe ADOQuery
 
Hallo

ich hänge mal wieder ziemlich fest.

Ich führe ein SQL Update aus und übergebe die Werte mit Parametern.
Ein Wert ist eine Identifikationsnummer(GUID) die ich auch übergeben will.
Ist die Numnmer nicht Gesetzt kommt ein 'NULL' als string zurück was dann zu einen Fehler führt.

Kann man das irgendwie in der Query einstellen.

hier mal mein Code

Delphi-Quellcode:
CreateQuery(qtemp);
  qtemp.ParamCheck := true;
  qTemp.SQl.text := 'UPDATE AnalyseAkquiseConfig SET '+
                                       'Event             = :Event, '             +
                                       'Betreff           = :Betreff, '           +
                                       'TerminText        = :TerminText, '       +
                                       'MitTyp            = :MitTyp, '           +
                                       'IAkteAkquise      = :IAkteAkquise, '     +
                                       'MitDSN            = :MitDSN, '           +
                                       'KontaktTyp        = :KontaktTyp, '       +
                                       'ProzessDSN        = :ProzessDSN '       +
                                       'OnOwnEventNoCreate = :OnOwnEventNoCreate, '+
                                       'Gewichtung        = :Gewichtung '        +
                    'WHERE DSN = '+alsDSN(sSatzDSN);
  //Parameterübergabe
  qtemp.Parameters.ParamByName('Event').Value             := IntToStr(ZuAkqEvntNr(cbEvent.ItemIndex));
  qtemp.Parameters.ParamByName('Betreff').Value           := eBetreff.Text;
  qtemp.Parameters.ParamByName('TerminText').Value        := Bemerkungen.Text;
  qtemp.Parameters.ParamByName('MitTyp').Value            := AlsZahl(IntToStr(cbMitarbeiter.ItemIndex));
  qtemp.Parameters.ParamByName('IAkteAkquise').Value      := AlsZahl(IntToStr(cbAktion.ItemIndex));
  qtemp.Parameters.ParamByName('MitDSN').Value            := '{B6625AD8-D894-4D25-BCBE-6A610E295903}';//AlsDSN(beMitarbeiter.DSN);


  qtemp.Parameters.ParamByName('KontaktTyp').LoadFromStream(sStream,ftBlob);
  qtemp.Parameters.ParamByName('ProzessDSN').Value        := ProzessSQL;// Result := 'NULL' oder GUID
  qtemp.Parameters.ParamByName('OnOwnEventNoCreate').Value := BoolToStr(cbOnOwnEventNoCreate.Checked);
  qtemp.Parameters.ParamByName('Gewichtung').Value        := AlsZahl(IntToStr(
                                                                                AkquiseBewertungZuInt(
                                                                                  TGewichtung(cbPrioritaet.ItemIndex),
                                                                                  TGewichtung(cbStorno.ItemIndex),
                                                                                  TGewichtung(cbAbschluss.ItemIndex),
                                                                                  TGewichtung(cbKundenbindg.ItemIndex),
                                                                                  TGewichtung(cbProv.ItemIndex),
                                                                                  TGewichtung(cbHaftung.ItemIndex))
                                                                                ));

  qTemp.ExecSQL;

DeddyH 26. Jul 2011 14:50

AW: GUID Parameterübergabe ADOQuery
 
Bist Du sicher, dass 'NULL' zurückkommt? Und wenn, was soll dann stattdessen eingetragen werden? Sind NULL-Werte in dem entsprechenden Feld erlaubt?

p80286 26. Jul 2011 15:03

AW: GUID Parameterübergabe ADOQuery
 
Ich habe da so meine Probleme den Fehler nach zu vollziehen.
wenn "ProzessDSN" als String(varchar/char....) definiert ist, dann sollte man von '',' ','NULL'' bis 'PillePalle' eigentlich alles übergeben können was einem in den Sinn komt.

Gruß
K-H

WizoHulk 26. Jul 2011 15:16

AW: GUID Parameterübergabe ADOQuery
 
Die Spalte"ProzessDSN" ist mit uniqueidentifier gesetzt.
Wird jetzt 'NULL' gesetzt kommt der Fehler Falsche Convertierung.
Das Result von ProzessSQL ist string.

DeddyH 26. Jul 2011 15:36

AW: GUID Parameterübergabe ADOQuery
 
Wenn das Feld einen Default-Wert besitzt, könnte man evtl. abhängig davon, ob ProzessSQL eine GUID zurückgibt, unterschiedliche Statements implementieren (einmal mit und einmal ohne Angabe der GUID).

p80286 26. Jul 2011 16:03

AW: GUID Parameterübergabe ADOQuery
 
Zitat:

Zitat von DeddyH (Beitrag 1113657)
Wenn das Feld einen Default-Wert besitzt,

Ein UniqueIdentifier mit einem Default-Wert?
spätestens beim zweiten gleichen Eintrag sollte es krachen!?

Gruß
K-H

DeddyH 26. Jul 2011 16:47

AW: GUID Parameterübergabe ADOQuery
 
Was ich meinte: http://msdn.microsoft.com/de-de/library/ms190215.aspx

p80286 26. Jul 2011 16:54

AW: GUID Parameterübergabe ADOQuery
 
Pardon, ein Mistverständnis!

Gruß
K-H

DeddyH 26. Jul 2011 16:58

AW: GUID Parameterübergabe ADOQuery
 
Kein Thema, ich hatte mich auch missverständlich ausgedrückt ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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