CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Polecenie ExecSQL() zawiesza program

Polecenie ExecSQL() zawiesza program

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

Polecenie ExecSQL() zawiesza program

Nowy postprzez mate006 » czwartek, 28 października 2010, 11:45

Witam

Od jakiegoś czasu samo z siebie polecenie SQLDataSet->ExecSQL() zawiesza program i to tylko gdy wykorzystuje "Update", wcześniej wszystko chodziło ok, nic nie edytowałem w kodzie, no a teraz trzeba mi szybko coś edytować i nie da się, próbowałem zmieniać zapytanie, usuwałem linijki kodu, lecz nic nie pomogło co może być powodem

Dokładnie to mam w SQLDateSet o nazwie EditZl

KOD mysql:     UKRYJ  
CommandText =  UPDATE zlecenia SET  CENA=:CENA  WHERE ID =:ID


wywołuje to takim kodem

KOD cpp:     UKRYJ  
   DM->EditZl->ParamByName("cena")->AsString       = zlecenia->na_kropke(eCena->Text.Trim());
   DM->EditZl->ParamByName("id")->AsString           = id;

  try
  {
     DM->EditZl->ExecSQL();
  }
  __finally
  {
     DM->EditZl->Close();
  }


ale jak zmienie na

UPDATE magazyn SET
...

To działa poprawnie tylko tyle ze zmienia w tabeli magazyn, czemu w tabeli zlecenia nie działa, w tabeli klienci jest też to samo, reszta tabel działa prawidłowo
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 145
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox

Re: Polecenie ExecSQL() zawiesza program

Nowy postprzez banita » czwartek, 28 października 2010, 14:31

sproboj wykonac ten update w jakims programie do administrowania baza. nei wiem co to za baza, dla mysql np mozesz uzyc heidisql, postgresq pgadmin itp
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Polecenie ExecSQL() zawiesza program

Nowy postprzez mate006 » czwartek, 28 października 2010, 18:03

Ale co mi to da jak to jest tylko część zapytania potem jest jeszcze 10 zmiennych no i potem muszę wydrukować korzystając z tych danych
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 145
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox

Re: Polecenie ExecSQL() zawiesza program

Nowy postprzez banita » czwartek, 28 października 2010, 20:38

sprawdz czy ten update wykonuje sie poprawnie poza twoja aplikacja
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Polecenie ExecSQL() zawiesza program

Nowy postprzez Corvis » piątek, 29 października 2010, 09:34

Po co ci to:

Kod: Zaznacz cały
DM->EditZl->Close();


Jeżeli używasz ExecSql(); nie musisz zamykać DataSeta bo zapytanie typu update nie zwraca kursora.

EDIT.

Poco budować zapytania SQL w programie ?? Pisałem już o tym kiedyś. Zrób sobie procedure składowaną do tego UPDATEa. A w kodzie ją tylko wywołaj.


Ps. Co ci wywala program ?? jakieś błędy ??
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaOpera

Re: Polecenie ExecSQL() zawiesza program

Nowy postprzez mate006 » piątek, 29 października 2010, 18:47

Mam procedurę na data module, tylko chciałem pokazać o co mi chodzi, bo wszystko chodziło ok.

Poza aplikacją chodzi ok, tzn zrobiłem nowy projekt i na nim działa
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 145
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox


Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości

cron