Registriert seit: 30. Aug 2011
31 Beiträge
Delphi 7 Enterprise
|
AW: INSERT INTO SELECT ohne Spaltenliste
21. Okt 2011, 15:11
Es ist ein String, wird aber innerhalb des Strings nicht in Anführungsstrichen stehen. D.h. du musst String-Felder in deinem Value-String in Gänsefüßchen setzen, also wäre der Sting gleich:
'1,1,Acer Monitor,10.10.2011' müsste er eigentlich sein:
'1,1,'Acer Monitor','10.10.2011'' und noch eigentlicher, müssten die Anführungsstrich maskiert werden, also:
'1,1,''Acer Monitor'',''10.10.2011''' und das Datumfeld müsste ggf. nochmal anders behandelt werden. In Oracle säh das z.B. evtl. so aus:
'1,1,''Acer Monitor'',To_Date(''10.10.2011'',''dd.mm.yyyy'')'
Besser wäre es glaub ich generell mit Parametern zu arbeiten, dann haste das Problem nicht, denn in der Form wie du das machst, müssteste je nach Feldtyp in der Mastertabelle die Elemente des Value-Strings anpassen.
Edit: Siehe z.B. mal wie Bummi das in #33 gemacht hat!
Der Passus hier:
Delphi-Quellcode:
if f.IsNull then Result := 'NULL'
else
Case
f.DataType of
ftSmallint, ftInteger, ftWord,ftAutoInc,ftLargeint,
ftFloat, ftCurrency, ftBCD ,ftFMTBcd,ftLongWord, ftShortint, ftByte, ftExtended ,ftSingle: Result := Stringreplace(f.AsString, ',','.',[]) ;
ftString,ftWideString,ftGuid : Result := QuotedStr(f.AsString);
ftDate, ftDateTime, ftTime : Result := QuotedStr(FormatdateTime('yyyymmdd hh:nn:ss.zzz',f.AsDateTime));
ftBoolean: Result := IntToStr(Integer(f.AsBoolean));
// to be continued
End
Es soll ja noch gar kein Datum rein. Werde es morgen oder so mal fertig machen. Allen vielen Dank für die Hilfe!
|