Avatar billede r9 Nybegynder
17. februar 2003 - 19:38 Der er 6 kommentarer og
1 løsning

Database probemmer....

Denne kode virker fint første gang den bliver udført.
Men anden gang, så fejler det.
(Access violation at address....)

Hvis man så lukker programmet, og starter det op igen, så virker det igen første gang....

Hvad kan problemmet være?

function TDbHandler.OpretKunde(kunde : TKunde): Boolean;
begin
Result := false;
SQLQuery.SQL.Clear;
SQLQuery.SQL.Add('INSERT INTO ' +
                  'Individer (Firmanavn, Cvrnr,'+
                  'Cprnr, Titel, Fornavn, Mellemnavn, Efternavn, Gadenavn,'+
                  'Husnr, Lejlnr, Etagenr, Postnr, Bynavn, Land, Tlf1, Tlf2,'+
                  'Tlf3, Fax1, Fax2, Fax3, Email1, Email2, Email3)' +
                  'VALUES (:Firmanavn, :Cvrnr,'+
                  ':Cprnr, :Titel, :Fornavn, :Mellemnavn, :Efternavn, :Gadenavn,'+
                  ':Husnr, :Lejlnr, :Etagenr, :Postnr, :Bynavn, :Land, :Tlf1,'+
                  ':Tlf2, :Tlf3, :Fax1, :Fax2, :Fax3, :Email1, :Email2, :Email3)');


SQLQuery.ParamByName('Firmanavn').Value := kunde.Firmanavn;
SQLQuery.ParamByName('Cvrnr').Value := kunde.Cvrnr;
SQLQuery.ParamByName('Cprnr').Value := kunde.Cprnr;
SQLQuery.ParamByName('Titel').Value := kunde.Titel;
SQLQuery.ParamByName('Fornavn').Value := kunde.Fornavn;
SQLQuery.ParamByName('Mellemnavn').Value := kunde.Mellemnavn;
SQLQuery.ParamByName('Efternavn').Value := kunde.Efternavn;
SQLQuery.ParamByName('Gadenavn').Value := kunde.Gadenavn;
SQLQuery.ParamByName('Husnr').Value := kunde.Husnr;
SQLQuery.ParamByName('Lejlnr').Value := kunde.Lejlnr;
SQLQuery.ParamByName('Etagenr').Value := kunde.Etagenr;
SQLQuery.ParamByName('Postnr').Value := kunde.Postnr;
SQLQuery.ParamByName('Bynavn').Value := kunde.Bynavn;
SQLQuery.ParamByName('Land').Value := kunde.Land;
SQLQuery.ParamByName('Tlf1').Value := kunde.Tlf1;
SQLQuery.ParamByName('Tlf2').Value := kunde.Tlf2;
SQLQuery.ParamByName('Tlf3').Value := kunde.Tlf3;
SQLQuery.ParamByName('Fax1').Value := kunde.Fax1;
SQLQuery.ParamByName('Fax2').Value := kunde.Fax2;
SQLQuery.ParamByName('Fax3').Value := kunde.Fax3;
SQLQuery.ParamByName('Email1').Value := kunde.Email1;
SQLQuery.ParamByName('Email2').Value := kunde.Email2;
SQLQuery.ParamByName('Email3').Value := kunde.Email3;
SQLQuery.ExecSQL;
end;



Jeg benytter mySQL, TSQLConnection og TSQLQuery fra dbExpress
Avatar billede martinlind Nybegynder
17. februar 2003 - 20:33 #1
hvad er tkunde ??, hvilken line fejler den i ??
Avatar billede r9 Nybegynder
17. februar 2003 - 20:48 #2
Den fejler i denne linje: SQLQuery.SQL.Clear;



tKunde er et kunde Objekt:


unit Kunde;

interface

type
TKunde = class(TObject)

    private
        kFirmanavn    : String;
    kCvrnr        : String;
    kCprnr        : String;
    kTitel        : String;
        kFornavn      : String;
        kMellemnavn    : String;
        kEfternavn    : String;
        kGadenavn    : String;
        kHusnr        : String;
        kLejlnr        : String;
        kEtagenr      : String;
        kPostnr        : String;
        kBynavn        : String;
        kLand        : String;
        kTlf1        : String;
        kTlf2        : String;
        kTlf3        : String;
        kFax1        : String;
        kFax2        : String;
        kFax3        : String;
        kEmail1        : String;
        kEmail2        : String;
        kEmail3        : String;

          procedure setFirmanavn(Text : String);
          procedure setCvrnr(Text : String);
          procedure setCprnr(Text : String);
          procedure setTitel(Text : String);
          procedure setFornavn(Text : String);
          procedure setMellemnavn(Text : String);
          procedure setEfternavn(Text : String);
          procedure setGadenavn(Text : String);
          procedure setHusnr(Text : String);
          procedure setLejlnr(Text : String);
          procedure setEtagenr(Text : String);
          procedure setPostnr(Text : String);
          procedure setBynavn(Text : String);
          procedure setLand(Text : String);
          procedure setTlf1(Text : String);
          procedure setTlf2(Text : String);
          procedure setTlf3(Text : String);
          procedure setFax1(Text : String);
          procedure setFax2(Text : String);
          procedure setFax3(Text : String);
          procedure setEmail1(Text : String);
          procedure setEmail2(Text : String);
          procedure setEmail3(Text : String);
        //----------------------------------------------------------------------------
    published

    constructor Create();
      property Firmanavn : String
          read kFirmanavn
      write setFirmanavn;
      property Cvrnr : String
          read kCvrnr
      write setCvrnr;
      property Cprnr : String
          read kCprnr
      write setCprnr;
      property Titel : String
          read kTitel
      write setTitel;
    property Fornavn : String
          read kFornavn
        write setFornavn;
      property Mellemnavn : String
          read kMellemnavn
      write setMellemnavn;
    property Efternavn : String
          read kEfternavn
      write setEfternavn;
    property Gadenavn : String
          read kGadenavn
      write setGadenavn;
    property Husnr : String
          read kHusnr
      write setHusnr;
    property Lejlnr : String
          read kLejlnr
      write setLejlnr;
    property Etagenr : String
          read kEtagenr
      write setEtagenr;
    property Postnr : String
          read kPostnr
      write setPostnr;
    property Bynavn : String
          read kBynavn
      write setBynavn;
    property Land : String
          read kLand
      write setLand;
    property Tlf1 : String
          read kTlf1
      write setTlf1;
    property Tlf2 : String
          read kTlf2
      write setTlf2;
    property Tlf3 : String
          read kTlf3
      write setTlf3;
    property Fax1 : String
          read kFax1
      write setFax1;
    property Fax2 : String
          read kFax2
      write setFax2;
    property Fax3: String
          read kFax3
      write setFax3;
    property Email1 : String
          read kEmail1
      write setEmail1;
    property Email2 : String
          read kEmail2
      write setEmail2;
    property Email3 : String
          read kEmail3
      write setEmail3;


//----------------------------------------------------------------------------
    public

//----------------------------------------------------------------------------
    protected

end; //end type




//----------------------------------------------------------------------------
implementation

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;


constructor TKunde.Create();
begin
    kFirmanavn    := '';
  kCvrnr      := '';
  kCprnr          := '';
  kTitel          := '';
    kFornavn      := '';
    kMellemnavn    := '';
    kEfternavn    := '';
    kGadenavn     := '';
    kHusnr          := '';
    kLejlnr          := '';
    kEtagenr      := '';
    kPostnr          := '';
    kBynavn          := '';
    kLand            := '';
    kTlf1            := '';
    kTlf2            := '';
    kTlf3            := '';
    kFax1            := '';
    kFax2            := '';
    kFax3            := '';
    kEmail1         := '';
    kEmail2          := '';
    kEmail3          := '';
end;


procedure TKunde.setFirmanavn(Text : String);
begin
    kFirmanavn := Text;
end;
procedure TKunde.setCvrnr(Text : String);
begin
    kCvrnr := Text;
end;
procedure TKunde.setCprnr(Text : String);
begin
    kCprnr := Text;
end;
procedure TKunde.setTitel(Text : String);
begin
    kTitel := Text;
end;
procedure TKunde.setFornavn(Text : String);
begin
    kFornavn := Text;
end;
procedure TKunde.setMellemnavn(Text : String);
begin
    kMellemnavn := Text;
end;
procedure TKunde.setEfternavn(Text : String);
begin
    kEfternavn := Text;
end;
procedure TKunde.setGadenavn(Text : String);
begin
    kGadenavn := Text;
end;
procedure TKunde.setHusnr(Text : String);
begin
    kHusnr := Text;
end;
procedure TKunde.setLejlnr(Text : String);
begin
    kLejlnr := Text;
end;
procedure TKunde.setEtagenr(Text : String);
begin
    kEtagenr := Text;
end;
procedure TKunde.setPostnr(Text : String);
begin
    kPostnr := Text;
end;
procedure TKunde.setBynavn(Text : String);
begin
    kBynavn := Text;
end;
procedure TKunde.setLand(Text : String);
begin
    kLand := Text;
end;
procedure TKunde.setTlf1(Text : String);
begin
    kTlf1 := Text;
end;
procedure TKunde.setTlf2(Text : String);
begin
    kTlf2 := Text;
end;
procedure TKunde.setTlf3(Text : String);
begin
    kTlf3 := Text;
end;
procedure TKunde.setFax1(Text : String);
begin
    kFax1 := Text;
end;
procedure TKunde.setFax2(Text : String);
begin
    kFax2 := Text;
end;
procedure TKunde.setFax3(Text : String);
begin
    kFax3 := Text;
end;
procedure TKunde.setEmail1(Text : String);
begin
    kEmail1 := Text;
end;
procedure TKunde.setEmail2(Text : String);
begin
    kEmail2 := Text;
end;
procedure TKunde.setEmail3(Text : String);
begin
    kEmail3 := Text;
end;





end. //end unit
Avatar billede martinlind Nybegynder
17. februar 2003 - 20:55 #3
Husk at du skal lave en Create af din kunde, men det har du sikkert også gjort, og prøv evt at skrive

SQLQUERY.SQL.TEXT := <Dit statement>

så behøver du ikke clear og add ( 2 liner bliver til 1 :) ), men det burde ikke være noget problem at bruger clear og add, noget kunne tyde på at din SQLQuery comp. har en fejl, den Free'er sin SQL prop. når den har executet

/Martin
Avatar billede r9 Nybegynder
17. februar 2003 - 21:48 #4
Access violation kommer i TSQLConnection's property "LibaryName" som har valuen "dbexpmysql.dll"


Det er en officiel dbExpress komponent fra Borland
Avatar billede martinlind Nybegynder
18. februar 2003 - 09:56 #5
prøv at gå op på borland.com jeg mener jeg så der var kommet en opdatering til mysql, måske det hjælper
Avatar billede janbb Juniormester
19. februar 2003 - 06:45 #6
Jeg vil nødig gøre mig klog på noget der virker så komplext, men den almindeligste årsag til 'acces violation' - fejlmeddelelsen i databaseprogrammer af mere almindelig karakter er at - det feltnavn der i selve databasen er index skal udfyldes - hvis man springer dette over får man den type problem - på samme måde under indtasningen hvis man forsøger at give 'dem' samme navn.Det er sikkert noget mere indviklet i dit tilfælde, men check det for en sikkerheds skyld.
Avatar billede r9 Nybegynder
19. maj 2003 - 09:14 #7
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