![]() |
Re: SQL Insert Into Problem
Guten Morgen.
Also entweder bin ich zu dumm oder kapier es nicht.
Delphi-Quellcode:
da schmiert er mir ab beim Adocommand1.commandtext setzen ,mit:
ADOCommand1.CommandText:='insert into test values (:str )';
ADOCommand1.parameters.ParamByName('str').Value := teststring; ADOCommand1.Execute; Application uses a value of the wrong type for the current operation. Ich habe den PArameter str im adocommand angelegt? muß sonst noch was mache? danke für eure Geduld. |
Re: SQL Insert Into Problem
Zitat:
Versuchs mal mit: 1.
Delphi-Quellcode:
2. Lösche mal den händisch angelegten Parameter, setze die CommandText-Eigenschaft und überprüfe den Typ des automatisch angelegten Paramters und korigiere wenn nötig.
ADOCommand1.parameters.ParamByName('str').asString := teststring;
3. Feldliste im Insert setzen. |
Re: SQL Insert Into Problem
Du kannst das ganze auch umkompliziert über eine Stored Procedure machen.
So kannst du auch gleich Daten-Updates mit realisieren. Zudem hast du den Vorteil, das die SP deine Anwendung von der DB entkoppelt. Falls sich später Feldnamen ändern oder die Daten woanders gespeichert werden sollen, dann eine musst du nur die SP anpassen. Hier ein kleines Beispiel: auf dem SQL-Server einmalig eine SP erzeugen
SQL-Code:
CREATE PROCEDURE SET_Table1_Data
@ID INT =NULL @NVARCHAR_VALUE NVARCHAR(255) = NULL, AS BEGIN -- Parameter prüfen -- Daten aktualisieren, falls ID nicht NULL ist und existiert UPDATE Table1 SET Ein_VARCHAR_Feld = @NVARCHAR_VALUE WHERE ID = @ID AND ID IS NOT NULL IF @@ROWCOUNT = 0 -- (also kein Datensatz aktualisiert wurde (RowsAffected =0) ) BEGIN INSERT INTO Table1 ( Ein_NVARCHAR_Feld ) VALUES ( @NVARCHAR_VALUE ) END END In Delphi würde ich die SP so benutzen:
Delphi-Quellcode:
function SaveData:Boolean;
var SP:TAdoStoredPoc; begin Result:=False; SP:=TAdoStoredProc.create(nil); try SP.Connection:=Datamodule1.AdoConn; // hier gehören noch ein paar Prüfungen hin SP.Procedurename='SET_Table1_Data'; // z.B. ist AdoConn.Connected=true ? SP.Parameters.refresh; // SP.Parameters[2].value:=Eine_ID_oder_NULL; SP.Parameters[3].value:=Ein_String_der_in_NVARCHAR_Feld_geschrieben_werden_soll; SP.ExecProc; Result:=true; finally FreeAndNil(SP); end; end; Schöne Grüße, Jens :hi: |
Re: SQL Insert Into Problem
Hi,
@ mkinzler. Das ADOCommand1.parameters.ParamByName('str').asString := teststring; geht nicht.asstring gibt es nicht. Habe sogar das Probiert: ADOCommand1.CommandType:=cmdText; . ohne Erfolg. Also i dummkopf. Es muß so aussehn.
Delphi-Quellcode:
mfg
ADOCommand1.CommandText := 'insert into test (spalte1) values (:str)';//spaltenname angeben
ADOCommand1.Parameters.ParamByName('str').Value := teststring; ADOCommand1.Execute; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz