Problem z korzystaniem z bazy danych w DLL

0

Cześć, ta część aplikacji właśnie nie miała przysporzyć mi żadnych problemów.

W dll tworzę sobie dwa obiekty TAdoConnection, gdyż będę łączył się z dwiema różnymi bazami danych:

//podłączenie do bazy programu
  AppDBConnection:=TADOConnection.Create(nil);
  AppDBConnection.LoginPrompt:=false;
  AppDBConnection.ConnectionString:=AppConnectionString; //poprawny connectionString
  AppDBConnection.Connected:=true;

//tak samo tworzę drugi obiekt
//AppDBConnection jest zmienną globalną

Następnie chcę wykonać na bazie kilka instrukcji SQL.
Używam do tego celu TADOQuery:

var
  AppAdo: TADOQuery;
  myQuery: string;
begin
//tworzę ADO do aplikacji
  AppADO:=TADOQuery.Create(nil);
  AppADO.Connection:=AppDBConnection;

//pobieram wszystkich pracowników z aplikacji
  myQuery:='select * from employees order by IDInDevice asc';
  AppAdo.SQL.Text:=myQuery;
  
  AppAdo.Open; //w tym miejscu mam błąd

I ten błąd to: [Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego

Czytałem o tym w necie, ale w żaden sposób to do mnie nie pasuje, bo z aplikacji głównej bez problemów z bazą się łączę.
ConnectionString jest poprawny, bo utworzyłem go testowo przez edytor w TADOConnection.
Tabela employees istnieje.

0

a może spróbuj uprościć, i wykorzystaj connecta z aplikacji.

0
areksum napisał(a)

a może spróbuj uprościć, i wykorzystaj connecta z aplikacji.

Problem w tym, że nie mogę, bo aplikacja jest nieco skomplikowana.
Teraz już jestem prawie pewien, że ten błąd wynika z problemu z przekazywaniem rekordu do dllki.

0

BTW w dll'ce używa się ShortStringów... jak chcesz używać Stringów to musisz dodać ShareMem do uses.

0
Grzegorz16 napisał(a)

BTW w dll'ce używa się ShortStringów... jak chcesz używać Stringów to musisz dodać ShareMem do uses.
a ten dalej swoje - nauczył się na pamięć i wszędzie pisze...
przecież tu słowa o stringach (nie tych na du**) nie było [glowa]

0

A te bazy są zdalne, czy przechowywane lokalnie? Bo jak to drugie, to radzę wykorzystać pliki file of i typ recortd.

0

Misiekd nie najeżdżaj tak na mnie. Jak widać nie umiem czytać ze zrozumieniem. Mój błąd. Za to ty następnym razem patrz na daty postów za nim dalej zaczniesz najeżdżać na kogoś. Napisałem je przed tym jak pięknie przedstawiłeś mi te słowa font'em 6.

0
Darkhog napisał(a)

A te bazy są zdalne, czy przechowywane lokalnie? Bo jak to drugie, to radzę wykorzystać pliki file of i typ recortd.

Takich rzeczy to nie rob, jak nikt cie nie zmusza pod grozba czynow karalnych! Nie po to powstaly systemy bazodanowe, by wracac do epoki kamienia lupanego i rezygnowac z transakcji, zaawansowanych zapytan czy triggerow.

Co do tematu, postaraj sie (testowo) wykonac to samo w aplikacji glownej: jesli problem jest dalej, to nie wina DLL (moze polaczenia z baza), a jesli sie wykona, to daj znac i bedziemy zastanawiac sie dalej.

0

Ta wiem, że bazy danych są po to, żeby z nich korzystać i odkąd do nich usiadłem, szczerze powiem ciężko sobie wyobrażam jakąś większą aplikację bez baz danych :D

W każdym razie problem rozwiązany, faktycznie chodziło o niepoprawne przekazywanie rekordu do dll.

1 użytkowników online, w tym zalogowanych: 0, gości: 1