08. marts 2011 - 20:14
Der er
4 kommentarer og
1 løsning
Update i SQL server...
Hej!
Hvis jeg laver en select statement:
//======================================
s := 'Select * from TableAntalSpor ' +
' where linie =' + inttostr(linie) +
' and spor= ' + IntToStr(Handlespor) + ' and DatoFra <= :Fra ' +
' and DatoTil >= :Til ';
så får jeg recordcount = 1
//======================================
Men hvis jeg laver:
s :='Update TableAntalSpor Set DatoTil = :Fra ' +
' where linie =' + inttostr(linie) +
' and spor= ' + IntToStr(Handlespor) + ' and DatoFra <= :Fra ' +
' and DatoTil >= :Til ';
så giver ExecSQL = 0 i retur??? hvorfor det??
08. marts 2011 - 23:55
#1
Burde være fordi den ikke laver en update :-)
hva' med commit ?
eller ret din :fra dato til noget du ved der ikke stå i forvejen, så burde den retunere 1 ( oppe i mit lille hoved )
09. marts 2011 - 12:05
#2
hmmmm.... jeg kan se at problemet er min tilgang til SQL serveren er knyttet til DateTime problematikken i forbindelse med SQL serveren.
Så... hvis jeg bruger
Close;
SQL.Clear;
s :='Select * from TableAntalSpor where linie =' + inttostr(7) +
' and spor= ' + IntToStr(2) +
' and DatoFra < :Fra ' +
' and DatoTil > :Fra ' +
SQL.Add(s);
Parameters.ParamByName('Fra').Value := encodedateTime(2010,11,29,23,00,00,000);
open;
oversætter delphi så selv delphis DateTime automatisk til SQL Server DateTime??
Ovenstående kode vil ikke virker for mig... den returnere recordcount=0 selvom jeg ved at der er 1 record der opfylder kriterierne...
hjælp.......
09. marts 2011 - 22:11
#4
jeg har fundet ud af det:
Hvis man skriver:
'Select * From TabelAntalSPor where DatoFRA < :Fra and ' +
' DatoTil > :Fra ';
SQL.add(s);
Parameters.ParamByName('Fra').Value := encodedateTime(2010,11,29,23,00,00,000);
open;
showmessage(inttostr(recordcount)); // her vises fejlagtigt 0
//====================
MEN: Hvis der skrives
'Select * From TabelAntalSPor where DatoFRA < :Fra1 and ' +
' DatoTil > :Fra2 ';
SQL.add(s);
Parameters.ParamByName('Fra2').Value := encodedateTime(2010,11,29,23,00,00,000);
Parameters.ParamByName('Fra1').Value := encodedateTime(2010,11,29,23,00,00,000);
open;
showmessage(inttostr(recordcount)); // Så virker det...
Problemet lå altså i "Parameters.ParamByName('Fra1').Value" som åbenbart kun understøtter een forekomst af den pågældende variable... mærkeligt....??