Dzieki za pomoc
Pozdrawiam
Zbych
Set tbl = New DAO.TableDef
tbl.Name = v_Descr
tbl.Connect = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=" &
Uzytkownik & ";PWD=" & Haslo & ";Server=" & Baza & ";"
tbl.SourceTableName =v_Name
CurrentDb.TableDefs.Append tbl
Nie napisałeś jakiego sterownika używasz. Ja pamiętam też problemy z ODBC do
Oracla przy używaniu sterownika dostarczanego z Oraclem (dla 8.0.4 i 8.0.5).
Żadnych problemów nie było przy użyciu sterownika Microsoft ODBC for Oracle.
Pozdrawiam
Przeczytaj wszystkie posty z tego wątkuNa komputerze kolegi próbowałem wykonać makro Excel, które u mnie
działa.
sglstring = "select * from tabela"
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
_
Destination:=ActiveCell, Sql:=sglstring)
.Refresh BackgroundQuery:=False
End With
I otrzymałem komunikat jak w temacie postu.
Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
możliwości połączenia.."
Jego system został preinstalowany według wymagań pracodawcy.
Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
może brakować lub nie i jak to sprawdzić ?
Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
sterownik "Microsoft ODBC dla Oracle".
Pozdrawiam
Andrzej
Witam
Na komputerze kolegi próbowałem wykonać makro Excel, które u mnie
działa.
sglstring = "select * from tabela"
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
_
Destination:=ActiveCell, Sql:=sglstring)
.Refresh BackgroundQuery:=False
End With
I otrzymałem komunikat jak w temacie postu.
Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
możliwości połączenia.."
Jego system został preinstalowany według wymagań pracodawcy.
Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
może brakować lub nie i jak to sprawdzić ?
Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
sterownik "Microsoft ODBC dla Oracle".
Pozdrawiam
Andrzej
Witam
Spróbuj zestawić połączenie na Oracle ODBC Driver na sterownikach
Microsoftu często i gęsto występują tego typu błędy. Następnie odpal
cmd i zrób pinga czy widzi wogóle bazę ..
On 9 Maj, 12:28, s@gazeta.pl wrote:
| Witam
| Na komputerze kolegi próbowałem wykonać makro Excel, które u mnie
| działa.
| sglstring = "select * from tabela"
| With ActiveSheet.QueryTables.Add(Connection:= _
| "ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
| _
| Destination:=ActiveCell, Sql:=sglstring)
| .Refresh BackgroundQuery:=False
| End With
| I otrzymałem komunikat jak w temacie postu.
| Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
| możliwości połączenia.."
| Jego system został preinstalowany według wymagań pracodawcy.
| Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
| może brakować lub nie i jak to sprawdzić ?
| Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
| sterownik "Microsoft ODBC dla Oracle".
| Pozdrawiam
| Andrzej
Witam
Spróbuj zestawić połączenie na Oracle ODBC Driver na sterownikach
Microsoftu często i gęsto występują tego typu błędy. Następnie odpal
cmd i zrób pinga czy widzi wogóle bazę ..
No i sprawdź czy ten użytkownik ma uprawnienia do połączenia z bazą
Pozdrawiam
Witam
Na komputerze kolegi próbowałem wykonać makro Excel, które u mnie
działa.
sglstring = "select * from tabela"
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
_
Destination:=ActiveCell, Sql:=sglstring)
.Refresh BackgroundQuery:=False
End With
I otrzymałem komunikat jak w temacie postu.
Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
możliwości połączenia.."
Jego system został preinstalowany według wymagań pracodawcy.
Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
może brakować lub nie i jak to sprawdzić ?
Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
sterownik "Microsoft ODBC dla Oracle".
Pozdrawiam
Andrzej
brakuje poprawnie skonfigurowanego klienta Oracle z dopisanycm TNS-em w
pliku tnsnames.ora serwera który jest zaszyty w connectionstring-u
poszukaj go u kolegi
klient Oracle powinien wskazywać akurat na właściwą konfigurację - bo
możesz mieć ich kilka
to czy masz odpowiedni wpis sprawdz za pomocą tnsping.exe serwer - jak
to działa będzie działać połączenie
konfiguracja np: http://www.cs.put.poznan.pl/jjezierski/sqlnet/sld023.htm
dzieki za dyskusje, wlasnie podony jak powyzej komunikat mi wywala!
Czyli wyglada, ze mam sterowniki, tylko nie moge ich uzyc?
Jakby ktos wtajemniczony (np. Pan Krzysztof) powiedzial ktory sterownik,
Zaraz... Przeciez napisales, ze widzisz ten sterownik?
Moze kilka slow tytulem uporzadkowania dyskusji:
Sterowniki ODBC do bazy oraclowej dostarcza zarowno Microsoft (Microsoft
ODBC for Oracle), jak i sam Oracle (do konkretnej wersji Oracle). Oba
sterowniki wymagaja zainstalowanego klienta Oracle (najlepiej, zeby ten
klient byl w wersji zgodnej z wersja bazy, chociaz mozna sie laczyc np. za
pomoca klienta wer. 8.0 do bazy 9.2 i odwrotnie).
Po zainstalowaniu klienta Oracle wazna jest konfiguracja zrodla danych
(host, port,service_name, itd) w pliku tekstowym tnsnames.ora, poniewaz
podczas konfiguracji zrodla ODBC podajesz nazwe zdefiniowanego tam zrodla. W
przypadku problemow z konfiguracja pliku tnsnames.ora, zglos sie do
administratora bazy Oracle, zeby przeslal Ci potrzebny wpis, ktory umiescisz
w tym pliku.
K.P.
Pobieranie danych z Oracla do Accessa można zrobić ręcznie za pomocą
menu "Pobierz dane zewnętrzne".
Ale jak to zrobić w kodzie VBA ?
Na razie doszedłem do tego:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=MSDAORA;DRIVER={Microsoft ODBC for
ORACLE};User ID=xxxxx;Password=xxxxx;Data Source=xxxxxx"
conn.Open
Wykonując to krokowo to widać, że do tego miejsca jest OK.
Potem:
Dim cmd As New ADODB.Command
strSQL = "Select * From Tabela1" - może tu jest źle ?
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
cmd.Execute
Ale to nic nie daje. W Accessie nie pojawia się żądana tabela.
I teraz mam problem, bo nie wiem co dalej. W literaturze jest dużo
różnych przypadków, ale nic mi na razie nie pasuje.
Pobieranie danych z Oracla do Accessa można zrobić ręcznie za
pomocą menu "Pobierz dane zewnętrzne".
Ale jak to zrobić w kodzie VBA ?
Na razie doszedłem do tego:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=MSDAORA;DRIVER={Microsoft
ODBC for ORACLE};User ID=xxxxx;Password=xxxxx;Data Source=xxxxxx"
conn.Open
Wykonując to krokowo to widać, że do tego miejsca jest OK.
Potem:
Dim cmd As New ADODB.Command
strSQL = "Select * From Tabela1" - może tu jest źle ?
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
cmd.Execute
Ale to nic nie daje. W Accessie nie pojawia się żądana tabela.
I teraz mam problem, bo nie wiem co dalej. W literaturze jest
dużo różnych przypadków, ale nic mi na razie nie pasuje.
Kidyś robiłem coś podobnego więc postaram się podać receptę w skrócie:
Za pomocą ADO tworzę tabelę z polami o określonym typie ( jak w helpie )
Otwieram połączenie za pomocą ADO (jak w helpie)
Uruchamiam zapytanie i kopuję dane do tabeli też ADO (jak w helpie)
Ważny jest typ pól do których kopiujesz dane!
Na pewno wszystko działa.
Powodzenia
P.S.
Czy twoja aplikacja w AC. to fronton a zaplecze to MSDE albo MSSQLSERV ?
Jeżeli tak to można stworzyć procedurę która zrobi to wszysko za ciebie.
Hej
Mam tabelę w Accessie, która zawiera pola liczbowe (podwójna
pracyzja).
Eksportuję ją do bazy Oracle i tam po otwarciu tej tabeli okazuje się,
że tabela zawiara wartości przerobione na tekst, czyli jak pisałem w
tytule maila:
z liczby 20 robi 20. (pojawia się kropka po 20).
Eksport wykonuję za pomocą kwerendy przekazującej:
SELECT * INTO [ODBC;DRIVER={Microsoft ODBC dla
Oracle};UID=;PWD=;SERVER=].AW_TDUK_NEW
FROM TDUK_NEW;
Czy jest sposób, aby liczba pozostała liczbą po tym eksporcie ?
Pozdrawiam
Andrzej
Mam takie zapytanie:
Select * From Kierunki IN '' [ODBC;DSN=ORAI;UID=grzesiek;PWD=mojeHasło];
No i teraz dostaję błąd:
"Aparat bazy danych Microsoft Jet nie może znaleźć tabeli wejściowej lub
kwerendy 'Kierunki'. Sprawdź, czy ona istniej oraz czy nazwa jest poprawnie
napisana."
Spróbowałem podłączyć tę tabelę do bazy.
DoCmd.TransferDatabase acLink, "ODBC",
"ODBC;DSN=ORAI;Uid=grzesiek;Pwd=mojeHasło;", acTable, "Kierunki", "Kierunki"
No i wówczas dostaje komunikat:
"Istnieje wiele tabel o tej samej nazwie. Należy podać nazwę właściciela
tabeli, posługując się formatem 'właściciel.tabela'."
Ok, więc poprawiłem składnie do linkowania:
DoCmd.TransferDatabase acLink, "ODBC",
"ODBC;DSN=ORAI;Uid=grzesiek;Pwd=mojeHasło;", acTable, "Grzesiek.Kierunki",
"Kierunki"
i teraz działa.
Ale jak poprawić składnie z In?
Znalazłem tutaj
http://kbalertz.com/179236/Using-SQLConfigDatasource-Oracle-Driver.aspx opis
parametrów sterownika "Microsoft ODBC for Oracle", z którego korzystam, ale
nigdzie nie widzę możliwości ograniczenia danych do jakiegoś jednego
schematu.
Pozdrawiam
Grzegorz
| Marek Horodyski wrote:
| Próbuje poprzez stringi :
Inne odpowiedzi :
[Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła
danych, a nie ma podanego sterownika domyślnego
lub
ADODB.Recordset /9 Nie można odnaleźć dostawcy. Może on być niepoprawnie
zainstalowany. : OPEN
Poprzez panel sterowania dostalem sie do ODBC - źródła danych. Mam tam tylko
w DSN użytkowika :
Baza danych MS Access
MS Access Database
Pliki programu dBase
Pliki programu Excel
Na zakładce STEROWNIKI mam m.in. :
"Microsoft ODBC dla Oracle" w wersji 2.575.1117.00
Różnice typu "for" i "dla" w wywołaniu nie poprawiają sytuacji :(
Pozdrawiam,
Marek Horodyski
I teraz łącze się przy connect stringu :
"Provider=MSDAORA;Password=testy;User ID=jakisuser;Data Source=NAZWA1"
Nie do konca jeszcze czuje konfiguracje samego wpisu w ODBC, ale DZIAŁA :)
Pozdrawiam,
Marek Horodyski
On Thu, 18 Jul 2002 09:47:21 +0200, ampa001 wrote:
| Gdzie mogę znaleźć helpa, najlepiej polskojęzyczny.
MSDN Microsoftu, tam jest opisane cale ODBC API.
Doprecyzuj pytanie bo jest zbyt ogolne.
Moze masz na mysli jakies konkretne narzedzie ? Powiedz cos...
Pozdrawiam
Rony
Poprzez ODBC miałem się połączyć z bazą ORACLE.
Ale już poradziłem sobie z tym:
Wchodząc w odbc zakładka "plikowe dsn" Dodaj "Tworzenie nowego żródła
danych" Microsoft ODBC for Oracle itd.
Rzeczywiście nie spojrzałem na MSDN ...
Dzięki
Adam Pawłowski
Witam wszystkich.
Jak z poziomu VC++ 6.0 dostac sie do bazy danych Oracle.
Chodzi mi jedynie o mozliwosc odczytania danych z tabel
do pozniejszej ich analizy.
Pozdrawiam.
<Marcin.Wode@comarch.plwrote:
Wlasnie. Czy sie da?
Chce skorzystac z driveru "Microsoft ODBC for Oracle", zeby nie musiec
instalowac klienta Oracla.
Chcialbym teraz dodac zrodlo danych, tylko nie chcialbym zeby trzeba
bylo to robic przy kazdym
komputerze, bo jest ich od groma. Czy mozna to zrobic sieciowo?
Np. w profilu użytkownika dodać instalowanie
Jesli nie, to gdzie Windows przechowuje informacje o skonfigurowanych
zrodlach ODBC? W rejestrze?
Czę ć w rejestrze,czę ć w plikach na dysku .dsn (zalezy od typu
ródła)
Bo jesli tak, to moznaby bylo ograniczyc czas spedzony przy konfiguracji
ODBC, importujac odpowiednie
wpisy rejestru przy kazdym kompie.
Chyba najszybciej byłoby jaki prosty program instalacyjny - wgra
klienta, skonfiguruje i już. A to nie dużo pracy
| Wlasnie. Czy sie da?
| Chce skorzystac z driveru "Microsoft ODBC for Oracle", zeby nie musiec
| instalowac klienta Oracla.
| Chcialbym teraz dodac zrodlo danych, tylko nie chcialbym zeby trzeba
| bylo to robic przy kazdym
| komputerze, bo jest ich od groma. Czy mozna to zrobic sieciowo?
Np. w profilu użytkownika dodać instalowanie
| Jesli nie, to gdzie Windows przechowuje informacje o skonfigurowanych
| zrodlach ODBC? W rejestrze?
Czę ć w rejestrze,czę ć w plikach na dysku .dsn (zalezy od typu
ródła)
| Bo jesli tak, to moznaby bylo ograniczyc czas spedzony przy konfiguracji
| ODBC, importujac odpowiednie
| wpisy rejestru przy kazdym kompie.
Chyba najszybciej byłoby jaki prosty program instalacyjny - wgra
klienta, skonfiguruje i już. A to nie dużo pracy
Wydaje mi sie ze gdyby zrobic DSN (jako FILE DSN) podobno wtedy windowsy
tworza opis w pliku !!!
i ten plik skopiowac do odpowiedznich katalogow na innych komputerach to
moze by poszlo ?!?!?!?
niestety nie testowalem tego i to tylko teoria (nie iwem czy win i tak nie
zapisoja czegos do rejestrow)
ale to sie chyba tez uda obejsc, znajdujac co i gdzie w rejestrach zostalo
zapisane i tworzac plik ktory wpisze to do
rejestru na danym komputerze !?
proponuje sprawdzic pierwszy przyklad !!! moze sie uda :)
Pozdrawiam
Andrzej Wichary 'Hornet'
wola@poczta.onet.pl wrote:
Witam wszystkich.
Mam problem w polaczeniu sie z baza oracle 8.1 za pomoca sterownika Microsoft
ODBC for Oracle. Jesli to robie za pomoca sterownika Oracle ODBC Driver to
wszystko jest ok tz. testuje sobie to programikem Oracle ODBC Tester.
Robie to w ten sposób ze tworze sobie nowy File DSN w ODBC Data Source
Administrator -wybieram driver dla oracla -wpisuje nazwe zródla danych -
pojawia sie okienko i teraz jezeli wybrałem driver Oracle ODBC
to wpisuje :
Service Name -czyli nazwe taka jaka podalem w Net8Assistent gdy
konfigurowałem Usluge Nazewnistwa
UserName i Password -to wiadomo
natomiast jesli wybralem driver Microsoft ODBC for Oracle to mama okienko z:
UserName, Password i
Server.
I tu jest chyba problem, próbowałem różnych wpisów np adres_ip@ISORCL,
adres_ip:port.
Jezeli ktos wie gdzie popelniam blad to bede wdzieczny za wszelkie uwagi.
Dla server wpisujesz Oraclowe Service Name.
Pozdrowienia,
LW
DS
DS
blad przy inicjalizacji dostawcy: nioeokreslony blad
dzieje sie to zarowno gdy korzystam z driverow ODBC Oracla, jak i Microsoft
ODBC for Oracle
dodam, ze zaczalem sprawdzac jak wyglada sprawa z innymi bazami i proba
polaczenia sie z Accesowym mdb przez Jet-a 4.0 zakonczyla sie komunikatem :
blad przy inicjalizacji dostawcy: katastrofalny blad , stad moje
podejrzenie, ze w win200 server generalnie cos jest nie w porzadku z
laczeniem sie z bazami.
czy ktos z grupowiczow ma moze doswiadczenie w tej kwestii? tzn czy
wystarczy jakis service pack, czy jest to jakas ogolnie znana wada win2000
server ?
za pomoc serdecznie dziekuje
pozdrawiam
gwyhyr
Chcialbym uzywac sterownika Microsoftowego ale nie u wszystkich klientow
taki w systemie istnieje.
Czy jest mozliwosc sciagniecia i zainstalowania takiego sterownika ???
Od ktorej wersji instalka Windowsa zawiera takowy sterownik??? (ja ja mam
ale klienci oczywiscie nie ! bo to by bylo zbyt piekne)
Prosze o pomoc
Pozdrawiam Matt
Czy jest jakis sposob aby sprawe rozwiazac ...
Pozdrowienia
Rafal Tomczyk
Mialem ten sam problem, oryginalny driver nie dziala dobrze
z Delphi, ja uzywam 'Microsoft ODBC for Oracle' - ten jest w porzadku (byl
ponoc na plytce
Chipa z lutego zeszlego roku, ale nie jestem pewien).
Pozdrawiam
Pawel Gorski
www.softline.geo.pl
p.s.
Czy szanowny kolega nie jest przypadkiem
z OPGK Elblag?Jezeli tak to pozdrowienia
od C-GEO dla NOBLA ;-)
MPSC NewsGateway-MPSCSN1 wrote:
Czy komus udalo sie skonfigurowac sterownik odbc do oracle (Microsoft
ODBC for Oracle) tak zeby mozna polaczyc sie z poziomu skryptu
perlowego?
Daruj sobie ten Microsoftowy sterownik. Ściągnij sobie z Oracla
(http://otn.oracle.pl).
A przy okazji to do Oracla z perla lepiej odwoływać się bezpośrednio
przez DBI a nie przez ODBC.
Wreszcie !
http://www.agnitum.com/download/OutpostProInstall.exe
Niestety, nie mam lekko z instalacją. :-(
Przy uruchomieniu Outposta mam coś takiego:
"Błąd inicjalizacji Logowania. Nie można utworzyć nowej bazy danych.
Należy zainstalować ODBC w wersji 3.0". Program po chwili się
uruchamia, ale to okienko jest uciążliwe.
Sprawdzałem i rzeczywiście - sterownik Microsoft ODBC for Oracle jest
w wersji 2.573.3711.00 (reszta sterowników w wersji 4.0 lub 6.0).
Ściągnąłem z netu plik ODBC30.EXE, ale tam jest jeszcze starsza
wersja. Skąd wziąć nowszą wersję?
Outpost ma bardzo ładnie opracowane forum dyskusyjne. Zapraszam do FAQ:
http://www.outpostfirewall.com/forum/forumdisplay.php?s=95630266c326e..., tam są linki do wszystkich
niezbędnych update.
M.
On 9 Maj, 14:02, Niko <krystian_n@interia.plwrote:
| On 9 Maj, 12:28, s@gazeta.pl wrote:
| Witam
| Na komputerze kolegi próbowałem wykonać makro Excel, które u mnie
| działa.
| sglstring = "select * from tabela"
| With ActiveSheet.QueryTables.Add(Connection:= _
| "ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
| _
| Destination:=ActiveCell, Sql:=sglstring)
| .Refresh BackgroundQuery:=False
| End With
| I otrzymałem komunikat jak w temacie postu.
| Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
| możliwości połączenia.."
| Jego system został preinstalowany według wymagań pracodawcy.
| Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
| może brakować lub nie i jak to sprawdzić ?
| Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
| sterownik "Microsoft ODBC dla Oracle".
| Pozdrawiam
| Andrzej
| Witam
| Spróbuj zestawić połączenie na Oracle ODBC Driver na sterownikach
| Microsoftu często i gęsto występują tego typu błędy. Następnie odpal
| cmd i zrób pinga czy widzi wogóle bazę ..
No i sprawdź czy ten użytkownik ma uprawnienia do połączenia z bazą
Pozdrawiam
Znalazłem pewien artykuł http://support.microsoft.com/default.aspx?scid=kb;en-us;277808
z wystąpieniem tego błędu poczytaj powinno pomóc..
On 9 Maj, 14:05, Niko <krystian_n@interia.plwrote:
| On 9 Maj, 14:02, Niko <krystian_n@interia.plwrote:
| On 9 Maj, 12:28, s@gazeta.pl wrote:
| Witam
| Na komputerze kolegi próbowałem wykonać makro Excel, które u mnie
| działa.
| sglstring = "select * from tabela"
| With ActiveSheet.QueryTables.Add(Connection:= _
| Â Â Â Â "ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
| _
| Â Â Â Â Destination:=ActiveCell, Sql:=sglstring)
| Â Â Â Â .Refresh BackgroundQuery:=False
| End With
| I otrzymałem komunikat jak w temacie postu.
| Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
| możliwości połączenia.."
| Jego system został preinstalowany według wymagań pracodawcy.
| Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
| może brakować lub nie i jak to sprawdzić ?
| Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
| sterownik "Microsoft ODBC dla Oracle".
| Pozdrawiam
| Andrzej
| Witam
| Spróbuj zestawić połączenie na Oracle ODBC Driver na sterownikach
| Microsoftu często i gęsto występują tego typu błędy. Następnie odpal
| cmd i zrób pinga czy widzi wogóle bazę ..
| No i sprawdź czy ten użytkownik ma uprawnienia do połączenia z bazą
| Pozdrawiam
Znalazłem pewien artykułhttp://support.microsoft.com/default.aspx?scid=kb;en-us;277808
z wystąpieniem tego błędu poczytaj powinno pomóc..- Ukryj cytowany tekst -
- Pokaż cytowany tekst -
Poczytam, dzięki za pomoc.
Odpowiadając na powyższe - użytkownik ma uprawnienia i np.: łączy się
za pomocą SQLPLUS.
Być może firewall ma tu coś do powiedzenia ?? Może blokuje zapytania
Excela i Accessa wychodzące w sieć ???
Pozdrawiam
Andrzej
On 9 Maj, 14:27, Niko <krystian_n@interia.plwrote:
| On 9 Maj, 14:05, Niko <krystian_n@interia.plwrote:
| On 9 Maj, 14:02, Niko <krystian_n@interia.plwrote:
| On 9 Maj, 12:28, s@gazeta.pl wrote:
| | Witam
| | Na komputerze kolegi próbowałem wykonać makro Excel, które u mnie
| | działa.
| | sglstring = "select * from tabela"
| | With ActiveSheet.QueryTables.Add(Connection:= _
| | "ODBC;DRIVER={Microsoft ODBC dla Oracle};UID=;PWD=;SERVER=;",
| | _
| | Destination:=ActiveCell, Sql:=sglstring)
| | .Refresh BackgroundQuery:=False
| | End With
| | I otrzymałem komunikat jak w temacie postu.
| | Dla kwerendy przekazującej Access komunikat był jakoś taki jak "Brak
| | możliwości połączenia.."
| | Jego system został preinstalowany według wymagań pracodawcy.
| | Co może być przyczyną braku połączenia ODBC do bazy Oracle ? Czego tam
| | może brakować lub nie i jak to sprawdzić ?
| | Zaznaczam, że w żródłach danych ODBC można dodać (co zrobilem)
| | sterownik "Microsoft ODBC dla Oracle".
| | Pozdrawiam
| | Andrzej
| Witam
| Spróbuj zestawić połączenie na Oracle ODBC Driver na sterownikach
| Microsoftu często i gęsto występują tego typu błędy. Następnie odpal
| cmd i zrób pinga czy widzi wogóle bazę ..
| No i sprawdź czy ten użytkownik ma uprawnienia do połączenia z bazą
| Pozdrawiam
| Znalazłem pewien artykułhttp://support.microsoft.com/default.aspx?scid=kb;en-us;277808
| z wystąpieniem tego błędu poczytaj powinno pomóc..- Ukryj cytowany tekst -
| - Pokaż cytowany tekst -
Poczytam, dzięki za pomoc.
Odpowiadając na powyższe - użytkownik ma uprawnienia i np.: łączy się
za pomocą SQLPLUS.
Być może firewall ma tu coś do powiedzenia ?? Może blokuje zapytania
Excela i Accessa wychodzące w sieć ???
Pozdrawiam
Andrzej
Powiem ci że gdyby tak było to byłby dodatkowy komunikat że chcesz się
połączyć z jakimś adresem "..." spróbuj zestawić połączenie na innych
serownikach doczytałem się w tym artykule ze może byc też coś z
referencjami może czegoś brakować jakies biblioteki popatrz tez w tą
stronę
s@gazeta.pl pisze:
| Przemysław Rachwał napisał(a):
| "Plik" - "Pobierz dane zewnętrzne" - Â połącz tabele -ODBC Databases
| tu wybierasz odpowiedni DSN, jak nie masz to sobie robisz guzikiem
| jak już się połączysz to wybierasz tabelkę lub perspektywę
| pojawi się taka wirtualna tabelka - można z niej korzystać jak ze
| zwykłej tabeli
| Widzę, że się nie rozumiemy.
| Przecież wyraźnie napisałem, że potrafię się połączyć z bazą Oracle, w
| tym w/w sposób.
| Andrzej
nie da się na robić jakieś protezy typu:
Dim conn As ADODB.Connection
Dim aRs as adodb.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=MSDAORA;DRIVER={Microsoft ODBC for
ORACLE};User ID=xxxxx;Password=xxxxx;Data Source=xxxxxx"
conn.Open
Wykonując to krokowo to widać, że do tego miejsca jest OK.
Potem:
Dim cmd As New ADODB.Command
strSQL = "Select * From Tabela1" - może tu jest źle ?
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
set aRs = cmd.Execute
while not aRs.Eof
    ' tu dodaj rekord do tabeli w dowolny sposób
    aRs.MoveNext
wend
cmd.execute bez instrukcji set nadaje się np. do robienia UPDATE
w takich konstrukcjach operujesz recordsetami i ADO a te mają się nijak
do DAO - enginu Access-a- Ukryj cytowany tekst -
- Pokaż cytowany tekst -
ADO bez problemu działa z Accessem od wersji 2000
Jeżeli chcesz przepisywać dane Recordsetami - nie ma problemu - robisz
jeden na tabeli Oracle a drugi na Accessie i w pętli przepisujesz. Ale
to jest wolne. Dużo lepiej podlinkować tabelki Oraclowe i działać na
nich kwerendami tworzącymi tabele w Acc. Kwerendy jak wiesz można
odpalac z poziomu kodu
Pozdrawiam
DK
On 3 Sty, 23:15, Przemysław Rachwał <prach@gazeta.plwrote:
| s@gazeta.pl pisze:
| Przemysław Rachwał napisał(a):
| "Plik" - "Pobierz dane zewnętrzne" - połącz tabele -ODBC Databases
| tu wybierasz odpowiedni DSN, jak nie masz to sobie robisz guzikiem
| jak już się połączysz to wybierasz tabelkę lub perspektywę
| pojawi się taka wirtualna tabelka - można z niej korzystać jak ze
| zwykłej tabeli
| Widzę, że się nie rozumiemy.
| Przecież wyraźnie napisałem, że potrafię się połączyć z bazą Oracle, w
| tym w/w sposób.
| Andrzej
| nie da się na robić jakieś protezy typu:
| Dim conn As ADODB.Connection
| Dim aRs as adodb.Recordset
| Set conn = New ADODB.Connection
| conn.ConnectionString = "Provider=MSDAORA;DRIVER={Microsoft ODBC for
| ORACLE};User ID=xxxxx;Password=xxxxx;Data Source=xxxxxx"
| conn.Open
| Wykonując to krokowo to widać, że do tego miejsca jest OK.
| Potem:
| Dim cmd As New ADODB.Command
| strSQL = "Select * From Tabela1" - może tu jest źle ?
| cmd.ActiveConnection = conn
| cmd.CommandType = adCmdText
| cmd.CommandText = strSQL
| set aRs = cmd.Execute
| while not aRs.Eof
| ' tu dodaj rekord do tabeli w dowolny sposób
| aRs.MoveNext
| wend
| cmd.execute bez instrukcji set nadaje się np. do robienia UPDATE
| w takich konstrukcjach operujesz recordsetami i ADO a te mają się nijak
| do DAO - enginu Access-a- Ukryj cytowany tekst -
| - Pokaż cytowany tekst -
ADO bez problemu działa z Accessem od wersji 2000
wiem o tym, problem w tym że pytanie które padło na samym początku i tok
rozumowania powiedzmy to było mało sensowne z punktu widzenia Access-a -
chodzi o mieszanie ADO z obiekatmi typu tabela
fakt można sobie odpalić przedstawiony fragment kodu i coś zrobić, tyle
że to nie o to chodzi
rozwiązaniem problemów to DoCmd.TransferDatabase
Jeżeli chcesz przepisywać dane Recordsetami - nie ma problemu - robisz
jeden na tabeli Oracle a drugi na Accessie i w pętli przepisujesz. Ale
to jest wolne. Dużo lepiej podlinkować tabelki Oraclowe i działać na
nich kwerendami tworzącymi tabele w Acc. Kwerendy jak wiesz można
odpalac z poziomu kodu
no wiem o tym
Jako dość początkujący użytkownik Oracle, ale za to nieźle znający MS SQL
6.5 / 7.0, mam ostatnio mały zgryz.
Na MS SQL jest pewne udogodnienie przy pisaniu złożonych zapytań - można je
umieścić w procedurze składowanej, obudować mnóstwem tablic tymczasowych i
na końcu przez proste
SELECT * FROM #res
gdzie #res to tablica tymczasowa, zwrócić obrobione dane.
Tak przygotowaną procedurkę mogę wywołać np. z TQuery lub TStoredProcedure
w Delphi lub pass-trought query z Access i mam otwartego recordseta.
I jeszcze na dodatek, nie muszę się martwić o tablice tymczasowe - są
unikalne dla zapytania, a po zamknięciu serwer sam się ich pozbędzie.
Na ile poznałem Oracle, mechanizm tablic tymczasowych jest cokolwiek inny,
ale mi to specjalnie nie przeszkadza - jestem w stanie przepisać zapytania
na postać jednego skomplikowanego SELECT, najeżonego UNION i NOT EXISTS.
Ale chciałbym to jakoś zwrócić ...
I teraz pytanie: jak z wnętrza procedury na Oracle zwrócić coś, co ODBC uzna
za
recordset, a Access będzie potrafił wyświetlić?
A na dodatek, jeszcze inny wariant, może ktoś przez przypadek robił to w
Delphi, przy
użyciu SQL Links (bez ODBC) i TQuery lub TStoredProcedure?
Jeszcze dla porządku: Oracle 8i na WinNT Server, Delphi 5.0 Enterprise na
WinnNT Workstation, BDE 5.10 z najnowszą wersją Oracle SQL Links Driver,
dwa drivery ODBC: Microsoft ODBC for Oracle 2.573.4204.00 i Oracle ODBC
Diver 8.01.55.00, Access 97.
Pozdrawiam grupowiczów
Maciek Figatowski
MFigatow@impaq.com.pl
<cyte
Pobieranie danych z Oracla do Accessa można zrobić ręcznie za pomocą
menu "Pobierz dane zewnętrzne".
Ale jak to zrobić w kodzie VBA ?
Na razie doszedłem do tego:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=MSDAORA;DRIVER={Microsoft ODBC for
ORACLE};User ID=xxxxx;Password=xxxxx;Data Source=xxxxxx"
conn.Open
Wykonując to krokowo to widać, że do tego miejsca jest OK.
Potem:
Dim cmd As New ADODB.Command
strSQL = "Select * From Tabela1" - może tu jest źle ?
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
cmd.Execute
Ale to nic nie daje. W Accessie nie pojawia się żądana tabela.
I teraz mam problem, bo nie wiem co dalej. W literaturze jest dużo
różnych przypadków, ale nic mi na razie nie pasuje.
</cyte
ufff, w międzyczasie powstał straaasznie długi wątek, a trafienia w sedno
jakby niewiele ;-)
Chcesz po prostu stworzyć acccessową tabelę w oparciu o dane z bazy Oracle ?
Uruchamiasz prostą kwerendę tworzącą tabelę:
Select * Into DocelowaTabelka
From
[ODBC;{ciąg połączenia do bazy
Oracle};Database=...;uid=...;pwd=...].TabelaŹródłowa
Z poziomu kodu:
CurrentDb.Execute "Select * Into DocelowaTabelka From [....].TabelaŹródłowa"
albo
CurrentProject.Execute ...
Inaczej wygląda sprawa z łączeniem tabel z Oracle (czy jakiegokolwiek innego
serwera)
Należy np. via DAO utworzyć odpowiedni obiekt TableDef, ustawić jego
właściwość Connect i dołączyć do kolekcji Database.TableDefs
Więcej znajdziesz w helpie pod CreateTableDef i Connect.
(nieco inaczej robi się to via ADO, ale i to da się wygooglać ;-) )
Odpowiednie akcje access'a pomagają pójść z tymi sprawami nieco na skróty.
I tu słusznie Przemek napomknął o DoCmd.TransferDatabase (gdzie odpowiedni
argument określa czy będzie to import, eksport czy po prostu stworzenie
linku)
Tabele połączone, to tak naprawdę "linki" do tabel oryginalnych.
Taki obiekt w accessie zawiera odpowiedni ciąg połączenia, dodatkowo access
buforuje informacje o polach tabeli i ich typach, indeksach itd.
W przypadku prostych zapytań czy połączeń z innymi tabelami tej samej
zdalnej bazy, access (a w zasadzie jego silnik) potrafi przekazać właściwe
zlecenie do serwera i pobrać zwrotną informację, w niemal tak samo efektywny
sposób, jakby pracował na swoich tabelach lokalnych.
Gorzej w przypadku kiedy nie potrafi stwierdzić co powinien przekazać do
servera a co wyliczyć u siebie, z już przejętych wyników.
W takich sytuacjach lepsze są kweredy przekazujące, które w ogóle pomijają
silnik Jet, i całą składnię zapytania wysyłają wprost do serwera.
Jednak dla akcji tworzenia tabeli w oparciu o prosty warunek na polu
indeksowanym, prosta kwerenda oparta na tabeli połączonej będzie wymagała
prawdopodobnie dużo mniej zachodu, niż tworzenie kwerendy przekazującej, by
dopiero w oparciu o nią tworzyć docelową kwerendę tworzącą tabelę ...
© 2009 Najlepszy miesiąc kawalerski w Polsce !!! - Ceske - Sjezdovky .cz. Design downloaded from free website templates