Avatar billede fhansen Praktikant
10. april 2007 - 01:14 Der er 5 kommentarer og
1 løsning

Mysql connection.

Jeg har problemmer med at få min connection til Mysql, til at køre stabilt.

Jeg har en SQLconnection, SQLquery, DataProvider, ClientDataset.

Jeg kan godt connecte til databasen, og navigere rundt i den, men jeg ved insert eller edit af records, bliver disse ikke sendt til serveren.

Programmet skal køre en opdate at nogle tabeller, fra local paradox/Mysql til en MYsql på nettet.

LocalData.First;
  ClientDataSet1.Last;
  while not LocalData.Eof do begin
    if ClientDataSet1.Locate('Nummer',LocalData.FieldByname('Nummer').AsString,[loCaseInsensitive]) then begin

      ClientDataSet1.Edit;
      ClientDataSet1.FieldByName('Navn').AsString := LocalData.FieldByName('Navn').AsString;
      ClientDataSet1.FieldByName('Adresse').AsString := LocalData.FieldByName('Adresse').AsString;
      ClientDataSet1.FieldByName('Postnr').AsString := LocalData.FieldByName('Postnummer').AsString;
      ClientDataSet1.FieldByName('City').AsString := LocalData.FieldByName('City').AsString;
      ClientDataSet1.FieldByName('Telefon').AsString := LocalData.FieldByName('HjTlf').AsString;
      ClientDataSet1.FieldByName('Mobil').AsString := LocalData.FieldByName('MoTlf').AsString;
      ClientDataSet1.FieldByName('Mail').AsString := LocalData.FieldByName('Mail').AsString;
      try
        ClientDataSet1.Post;
        if (ClientDataSet1.ChangeCount > 0) then
          ClientDataSet1.ApplyUpdates(-1);
              except on E: exception do
        ClientDataSet1.Cancel;
      end;
    end
    else begin
      ClientDataSet1.Last;
      ClientDataSet1.Insert;
      ClientDataSet1.FieldByName('Nummer').AsInteger := LocalData.FieldByName('Nummer').AsInteger;
      ClientDataSet1.FieldByName('Navn').AsString := LocalData.FieldByName('Navn').AsString;
      ClientDataSet1.FieldByName('Adresse').AsString := LocalData.FieldByName('Adresse').AsString;
      ClientDataSet1.FieldByName('Postnr').AsString := LocalData.FieldByName('Postnummer').AsString;
      ClientDataSet1.FieldByName('City').AsString := LocalData.FieldByName('City').AsString;
      ClientDataSet1.FieldByName('Telefon').AsString := LocalData.FieldByName('HjTlf').AsString;
      ClientDataSet1.FieldByName('Mobil').AsString := LocalData.FieldByName('MoTlf').AsString;
      ClientDataSet1.FieldByName('Mail').AsString := LocalData.FieldByName('Mail').AsString;
      ClientDataSet1.FieldByName('Login').AsInteger := LocalData.FieldByName('Login').AsInteger;
      ClientDataSet1.FieldByName('Password').AsInteger := LocalData.FieldByName('Pass').AsInteger;
      ClientDataSet1.FieldByName('Question').AsInteger := 0;
      ClientDataSet1.FieldByName('Admin').AsInteger := 0;
      try

        ClientDataSet1.Post;
        if (ClientDataSet1.ChangeCount > 0) then
          ClientDataSet1.ApplyUpdates(-1);
        except on E: exception do begin
        ClientDataSet1.Cancel;
        ShowMessage('Insert Error');
        end;
      end;
    end;
      LocalData.Next;
  end;
Avatar billede kroning Nybegynder
10. april 2007 - 09:09 #1
Da jeg startede med at benytte dbexpress havde jeg også problemer som f.eks. "record not found or changed by another" og jeg læste om en masse andre der også havde problemer. Det kan sikkert køre hvis man gør det rigtig men jeg valgte i stedet at køre det hele med SQL, dvs. SELECT * FROM... når jeg henter og INSERT, UPDATE, DELETE når der skal rettes i noget osv.
Jeg benytter så kun en SQLconnection og en SQLquery til SQL sætningerne.
Det har kørt på denne måde i flere år 100% stabil med adskillige brugere.
Avatar billede hrc Mester
10. april 2007 - 09:27 #2
Er du sikker ApplyUpdates bliver kaldt? Hvad hvis ChangeCount er 0? Er det i øvrigt ikke en unødvendig linje?
Avatar billede fhansen Praktikant
10. april 2007 - 11:24 #3
kroning, det er netop de fejl og problemmer jeg startede med.
hvis jeg forsøger at bruge execSql, får jeg en time invalid error.

hrc, ja det er jeg, jeg har haft en showmessage lagt ind.

Jeg fik en overgang programmet til at køre, ved at bruge close  og open.
Avatar billede fhansen Praktikant
11. april 2007 - 01:21 #4
Udanset hvad jeg gør får denne fejl invalid time.
Jeg tror det er min driver der noget galt med, jeg bruger en driver der hedder dbx4mysql, den bruger ikke libmysql.dll, og jeg aner ikke hvor jeg har den fra, jeg har prøvet så mange driver, pas filer m.v.

I hvilket bibliotek skal dll'en ligge ??

Finn
Avatar billede fhansen Praktikant
17. juni 2007 - 21:32 #5
lukker
Avatar billede fhansen Praktikant
17. juni 2007 - 21:33 #6
okay så lukker jeg nu
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