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??
Annonceindlæg fra Samsung Knox
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....??