Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler bei ADO-Parameter Typ ftLargeint (https://www.delphipraxis.net/35974-fehler-bei-ado-parameter-typ-ftlargeint.html)

Leuselator 14. Dez 2004 11:34


Fehler bei ADO-Parameter Typ ftLargeint
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Gemeinde.

Untersatz: MSSQL, ADO, D7, TADO, TBetterADO

Ich versuche ein bigint-Feld (64bit) zu füllen:
SQL-Code:
CREATE PROCEDURE SP_DUMMY(@PARA bigint)
AS
BEGIN
  INSERT INTO TABELLE
            ( BigIntFeld)
       VALUES
            (@PARA)
END
in Delphi:
Delphi-Quellcode:
var
  AP : TADOStoredProc;
  WERT : int64;
begin
  // AP.Create, Connection setzen BlaBla
  // dann:
  WERT := IrgendEin64BitInteger;
  AP.ProcedureName := 'SP_DUMMY';
  AP.Parameters.Clear;
  // und hier knallt es:
  AP.Parameters.CreateParameter('PARA',ftLargeint,pdInput, 0,WERT);
...

// und zwar in Unit ADODB:
function TParameters.CreateParameter(const Name: WideString;
  DataType: TDataType; Direction: TParameterDirection; Size: Integer;
  Value: OleVariant): TParameter;
begin
  Result := AddParameter;
  Result.FParameter := Create_Parameter(Name, DataType, Direction, Size);
  { Don't try to assign value when it is an EmptyParam (used when optional) }
  if not ((TVarData(Value).VType = varError) and
    (TVarData(EmptyParam).VError = $80020004)) then
    Result.FParameter.Value := Value; // <--- genau da macht es Peng ?!
end;
stehe echt auf dem Schlauch - irgendwie haut es die ganze Schose immer wieder aus der Kurve mit ftLargeInt - habe auch TBetterADODataSet versucht - Problem bleibt.

Ehm - Hilfe?
Gruß
[Edit]ScreenShot angehangen[/Edit]

Leuselator 14. Dez 2004 12:17

Re: Fehler bei ADO-Parameter Typ ftLargeint
 
Sehr merkwürdig...
Das scheint zu funktionieren:
Delphi-Quellcode:
    AP.Parameters.CreateParameter('PARA',ftLargeint,pdInput, 0,0);
    AP.Parameters.FindParam('PARA').Value := WERT;
¿?

shmia 14. Dez 2004 12:31

Re: Fehler bei ADO-Parameter Typ ftLargeint
 
Man braucht bei Stored Proc die Parameter nicht selbst erzeugen, sondern kann sie sich erzeugen lassen:
Delphi-Quellcode:
  AP.ProcedureName := 'SP_DUMMY';
  AP.Parameters.Refresh; // <<<
  AP.Paramters.ParamValues['PARA'] := 1234567890;
  AP.Execute;
Im Gegensatz zu komplizierten SQL-Anweisungen, funktioniert Parameters.Refresh bei Stored Procs ohne Fehler.


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