Avatar billede friiiiis Novice
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??
Avatar billede martinlind Nybegynder
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 )
Avatar billede friiiiis Novice
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.......
Avatar billede martinlind Nybegynder
09. marts 2011 - 15:35 #3
recordcount virker kun sjælendt på en sql-server ( se delphi hjælp )

mht. update og execsql plejer man at få antalet af ændringer retur fra en update :-)
Avatar billede friiiiis Novice
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....??
Avatar billede friiiiis Novice
09. marts 2011 - 22:11 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester