Avatar billede ingeman Mester
13. juni 2010 - 18:16 Der er 7 kommentarer og
1 løsning

Delphi Update access database

Procedure FaktUpdateNotes(DbNr,Notes:string);
Var
  TQ : TADOQuery;
  FilNavn : String;

Begin
    //
    // Findes database?
    FilNavn:=ExtractFilePath(Application.ExeName);
    While Filnavn[Length(FilNavn)]='\' Do FilNavn:=Copy(FilNavn,1,Length(FilNavn)-1);
    FilNavn:=StringReplace(GemIAccess,'$programdir',FilNavn,[rfIgnoreCase,rfReplaceAll]);

    If FileExists(FilNavn) Then Begin
      TQ:=TADOQuery.Create(Nil);
      Try
        TQ.ConnectionString:=ConnectIt+FilNavn;
        // Put i Notes
          TQ.SQL.Clear;
          TQ.SQL.Add('INSERT INTO Kartotek (Notat) VALUES(');
          TQ.SQL.ADD(''''+Notes+''',');
          TQ.ExecSQL;

      Finally
        TQ.Free;
      End;
     
    End; // FileExists
 
End;

Jeg har følgende kode - skal ændres til Update istedet.

Procedure FaktUpdateNotes(DbNr,Notes:string);

"DbNr" indeholder den post der skal opdateres i access "Debitornr"
"Notes" er indholdet som skal opdateres i access felt "Notes"
Avatar billede hugopedersen Nybegynder
13. juni 2010 - 18:52 #1
Noget i stil med nedenstående burde kunne gøre det.

TQ.SQL.Clear;
TQ.SQL.Add('UPDATE Kartotek');
TQ.SQL.Add('SET Notes  = :Notes');
TQ.SQL.Add('WHERE Debitornr = :Debitornr');
TQ.ParamByName('Notes').Value := Notes;
TQ.ParamByName('Debitornr').Value := DbNr;
TQ.Execute;
Avatar billede ingeman Mester
15. juni 2010 - 11:05 #2
Kode ok.

Jeg skal også bruge kode som fortæller om DbNr eksisterer i databasen ?
Avatar billede hugopedersen Nybegynder
17. juni 2010 - 12:13 #3
Du behøver ikke checke om det findes for at opdatere.
Efter min bedste overbevisning vil du kunne gøre det ved at lave en
try
except
end
rund om koden
Avatar billede ingeman Mester
17. juni 2010 - 13:50 #4
Det ser ud til at hvis

TQ.SQL.Clear;
TQ.SQL.Add('UPDATE Kartotek');
TQ.SQL.Add('SET Navn =:Navn');
TQ.SQL.Add('WHERE Debitornr = :Debitornr');
TQ.Parameters.ParamByName('Debitornr').Value := DbNr;
TQ.ExecSQL;

hvis TQ.ExecSQL = 0 Findes DbNr ikke i databasen.
Avatar billede hugopedersen Nybegynder
17. juni 2010 - 20:23 #5
Det forvirrer mig nok at jeg ikke lige kan se hvad du skal bruge det til i denne sammenhæng.
Avatar billede ingeman Mester
18. juni 2010 - 05:51 #6
Jeg har nok været lidt uklar.
Jeg har en database hvor jeg skal finde ud af om en given debitornr er oprettet - hvis den så er det skal dens felter updateres - jeg har så fundet ud af at hvis jeg opdatere og den ikke er der i databasen og tester på TQ.ExecSQL er værdien 0 - hvis den er i databasen er værdien <>0

Jeg skal bruge til at finde ud af om jeg kan opdater eller skal have oprettet et nyt record.

Det virker ihvertfald på den her måde - men måske er der en anden måde gøre det på istedet.
Avatar billede hugopedersen Nybegynder
18. juni 2010 - 07:28 #7
OK - det forklarer jo en hel del :-)

Personligt vil jeg måske gøre det at jeg altid først prøver at oprette debitoren og så derefter opdaterer. Hvis du har key på debitornummer vil du bare få en fejl når du prøver at oprette.

Om det er den rigtige måde kan vel altid diskuteres. Men den virker.
Avatar billede ingeman Mester
19. april 2011 - 19:38 #8
lukket
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