Probowalem sie podlaczyc do Accesowej bazy danych.
Stworzylem DSN w ODBC.
Utworzenie obiektu $db = new WIN32::ODBC("nazwa_DSN");
Nie zwraca bledu, lecz kiedy probuje wylas zapytanie:
$sqlQuerry="select * from MAIN";
if ($db-Sql($sqlQuerry)) {
$db-DumpError;
}
To dostaje:
---------- Error Report: ----------
Errors for "2" on connection 1:
Connection Number: 1
Error number: -1305
Error message: "[Microsoft][ODBC Microsoft Access Driver] The Microsoft
Jet database engine could not find the object 'XXXX'.
Make sure the object exists and that you spell its name and
the path name correctly."
-----------------------------------
Gdzie XXXX to nazwa ostatniej kolumny w tabeli MAIN.
Ten sam skrypt uruchamialem na bardzo podobnej konfiguracji
(z tym, ze byl to prawie czysty system [moj jest juz nieco zasmiecony]
i podstawowa partucja byla FAT [u mnie jest NTSF]).
W dokumentacji WIN32::ODBC znalazlem, ze Access musi tworzyc tymczasowy
plik, w zwiazku z czym, moga pojawic sie bledy, gdy skrypt nie ma
odpowiednich praw zapisu w katalogu, gdzi jest baza.
O co chodzi? Baza jest w tym samym katalogu, co skrypt, katalog
ma uprawnienia dla wszystkich, skrypt odpalany jest z konta
z lokalnymi prawami administratora.
Kiedys mialem podobna sytuacje, lecz zwiazana z otwieraniem plikow.
Skrypty uparcie twierdzily, ze nie moga otworzyc pliku, bo ten jest
zajety. Okazalo sie (po kilku nieprzespanych nocach), ze powodem
byla usluga serwera POP3, ktorego wymiana od razu pomogla.
Teraz, poza standardowymi uslugami w eNTkach mam tylko OmniHTTPd,
ktorego pozbyc sie nie moge.
Czy ktos juz sie spotkal z podobnym problemem?
Moze ktos zna rozwiazanie? Albo ma jakas sugestie, gdzie
szukac zrodla problemu?
Na perlu znam sie znacznie lepiej niz na szczegolach administracyjnych
winzgrozy NT, a z Accessem zawsze wolalem miec tak malo wspolnego, jak
sie da, lecz coz, na wladze, nie poradze :(((((
TIA za wszelkie podpowiedzi i sugestie (poza RTFM ;)))))
Pozdrawiam
Przeczytaj wszystkie posty z tego wątkuConnection string:
baza.ConnectionString="Driver={Microsoft Access Driver
(*.mdb)};Dbq=baza.mdb;Uid=Admin; Pwd="
Wrzucanie danych:
query = "INSERT INTO kategorie VALUES ('.....');"
baza.RecordSource = query
baza.Refresh
Nie bardzo to hula, bo generuje błędy (dokładnie metoda Refresh),
niestety, jak usuwam Refresh, dane nie są wrzucane do bazy,
gdy refresh jest - wszystko trafia do bazy ale generuje błędy, więc je
ignoruję (obsł. błędów)
spoko, do zaakceptowania, hula... ale...
Problem jest taki:
- wszystko działa prawidłowo ale tylko na jednym kompie (moim)
- na innych komputerach problem jest bardzo dziwny, mianowicie moja baza ma
dwie tabele,
do obu tabel dane wrzucam w ten sam sposób (identyczny fragment kodu) jak
opisałem
powyżej... i do jednej tabeli dane wchodzą do drugiej ani drgnie! (przy
czym na moim kompie
cały czas hula...)
Uwagi:
- ma to działać na każdym sprzęcie, z tego też powodu dobrałem właśnie taki
Connection String
nie korzystam z modelu Jet - bo zdarzają się nieścisłości w dystrybucjach
i wersjach, wolę
nie ryzykować, że coś mi gdzieś nie zadziała
- wyciąganie danych (SELECT...) działa bez najmniejszych problemów na tym
samym strowniku b.d. (!)
Pytanie:
- jak prawidłowo wykonać instrukcję INSERT (żeby sterownik ją łykną) - bez
używania metody Refresh,
bo ta generuje błedy...
- gdzie sprawdzić wersję tego sterownika b.d. którego używam, żeby ew.
zaktualizować go
Sugestie:
- może zmienić connection string na coś bardziej uniwersalnego?
Zgłupiałem, pomóżcie...
(nie jestem laikiem, więc nie tłumaczcie nic łopatologicznie :))) - tylko
konkrety :)
GG# 1124625
e-mail p@isp.pl
czy kto¶ z Was móg³by wrzuciæ co¶ takiego do VB i podzieliæ siê ze mn±
wynikiem?
Baza Access: Tabela = Team, pola = Name (text, 50), Description (text, 64)
Dane testowe: 1 rekord = Name: Team_1, Description = cokolwiek.
Public con as ADODB.Connection
Public rs as ADODB.Recordset
con.CursorLocation = adUseClient
con.IsolationLevel = adXactCursorStability Or adXactReadCommitted
con.Mode = adModeShareExclusive Or adModeReadWrite
con.ConnectionString = "DRIVER=Microsoft Access Driver
(*.mdb);UserCommitSync=Yes;Threads=3;SafeTransactions=1;PageTimeout=5;MaxSca
nRows=25;MaxBufferSize=2048;FIL=MS Access;DriverId=281;DBQ=" & App.Path &
"data.mdb;UID=Admin;"
'Open connection to database
con.Open
'Initialize recordset object
Set rs = New Recordset
'Assign recordset to newly opened connection
Set rs.ActiveConnection = con
'Place recordsets cursor location @ client side
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
a nastêpnie:
strSQL = "UPDATE Team SET Name = 'Team_2', Description = 'Changed' WHERE
Name = 'Team_1'"
con.Execute strSQL
a zaraz pó¼niej
strSQL = "SELECT Name FROM Team ORDER BY Name ASC"
rs.Open strSQL, , adOpenForwardOnly, adLockReadOnly
Bedê niezmiernie wdziêczny.
Taki w³a¶nie kod wywo³uje u mnie pad VB.
Mo¿e widzicie b³±d, którego ja nie widzê?
Microsoft Access Driver.
Nie wiedzialem ,ze M$ robi drivery pod Linuxa.
"Nie mozna załadowac procedur konfiguracyjnych sterownika ODCB Microsoft
Access Driver z powodu błedu systemowego o kodzie 31"
oraz
"Nie można załadowac bibloteki ustawień oraz translatora"
Próbowałem to naprawic ponowną instalacją MSOffice ale również wyskakuje
komunikat obłędzie:
"Błąd 1918. Błąd podczas instalowania sterownika ODBC: Microsoft Text Driver
(*.txt; *.csv), błąd ODBC 13: Nie można załadować biblioteki ustawień lub
translatora. Zweryfikuj, czy plik Microsoft Text Driver (*.txt; *.csv)
istnieje i czy masz do niego dostęp.
MSI (c) (C1:79): Produkt: Microsoft Office 2000 SR-1 Professional -- Błąd
1918. Błąd podczas instalowania sterownika ODBC: Microsoft Text Driver
(*.txt; *.csv), błąd ODBC 13: Nie można załadować biblioteki ustawień lub
translatora. Zweryfikuj, czy plik Mi
crosoft Text Driver (*.txt; *.csv) istnieje i czy masz do niego dostęp.
1: Microsoft Access Driver (*.mdb) 2: 3: C:WINDOWSSYSTEM 4: Driver 5:
ODBCJT32.DLL 6: Setup 7: ODBCJT32.DLL 8: APILevel 9: 1 10: ConnectFunctions
11: YYN 12: DriverODBCVer 13: 02.50 14: DSN 15: Baza danych MS Access 97 16:
FileExtns 17: *.mdb 18: FileUsage 19: 2 20: SQLLevel 21: 0 22: UID 23: Admin
Błąd 1918. Błąd podczas instalowania sterownika ODBC: Microsoft Access
Driver (*.mdb), błąd ODBC 13: Nie można załadować biblioteki ustawień lub
translatora. Zweryfikuj, czy plik Microsoft Access Driver (*.mdb) istnieje i
czy masz do niego dostęp.
MSI (c) (C1:79): Produkt: Microsoft Office 2000 SR-1 Professional -- Błąd
1918. Błąd podczas instalowania sterownika ODBC: Microsoft Access Driver
(*.mdb), błąd ODBC 13: Nie można załadować biblioteki ustawień lub
translatora. Zweryfikuj, czy plik Microso
ft Access Driver (*.mdb) istnieje i czy masz do niego dostęp."
dotyczy też kilku innych baz
Wygłąd administratora identyczny jak w drugim kompie
Jak mogę poradzić sobie z tym fantem
Zeb
Dzieki. Wolalbym jednak na zwyklym ODBC API.
Chce utworzyc dialog. Niestety cos takiego nie dziala:
retcode=SQLDriverConnect(hdbc,hDlg,(SQLCHAR*) "", 0,buf,
10000,&x,SQL_DRIVER_PROMPT);
Ja podaję jako 'connection string' pełną informację o docelowej bazie
danych.
Np. do łączenia się z bazą MS Access:
char * connection_string = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=C:\baza.mdb";
Do łączenia się z bazą MS SQL Server:
char * connection_string = "DRIVER={SQL Server};
DATABASE=moja_baza;SERVER=localhost;AutoTranslate=No;Trusted_Connection=Yes;
UseProcForPrepare=2;QuotedId=No;AnsiNPW=No;"
i tak dalej. Generalnie, jeśli podasz jako pierwszy parametr DRIVER=... to
następne parametry dotyczą tylko tego konkretnego sterownika. Jeśli podasz
wszystkie wymagane parametry, to połączy automatycznie, bez potrzeby
wyskakiwania dodatkowych dialogów.
A już największa zaleta tego podejścia, to brak wymogu wpisywania danych do
źródeł danych ODBC w panelu administracyjnym czy też poprzez aplikację.
Fragment kodu:
SQLHENV environment_handle;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &environment_handle);
int wersja = SQL_OV_ODBC2;
SQLSetEnvAttr(environment_handle, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)wersja,
0);
SQLHDBC connection_handle;
SQLAllocHandle(SQL_HANDLE_DBC, environment_handle, &connection_handle);
char wynik_polaczenia[4096];
short faktyczna_dlugosc;
SQLDriverConnect(connection_handle, NULL, connection_string,
(short)strlen(connection_string), wynik_polaczenia, 4096,
&faktyczna_dlugosc, SQL_DRIVER_NOPROMPT);
Nie jestem pewien czy mam rację - bo nie korzystam z Install Shielda, ale
najprawdopodobniej nie instalujesz na docelowym komputerze sterowników DAO.
Mechanizm ODBC - MDB (ACCESS) działa dokładniej (mniej-więcej) :
ODBC32 - DAO - MDB, Tak więc same sterowniki też muszą być.
Pozdrawiam
Stanisław Kozicki (również piszący mgr...)
Robert Kolud wrote in message <6j3jvk$fc@dino.wsi.edu.pl...
Witam
Pisze program w jezyku Visual C++ do moje pracy mgr
czas mnie goni a napotkalem pewien duzy problem wiec
moze ktos moze mi pomoc. Mianowicie moj program
korzysta z bazy danych Accessa poprzez ODBC.
Wiec to ODBC musi zostac na komputerze docelowym czasem
zainstalowane.
Uzylem do tego programu Install Shield Express 2.
Utworzylem projekt typu - Visual C++.
W programie instalacyjnym mam wlaczane instalowanie
ODBC dla Accessa.
Po zainstalowaniu programu ODBC nie pracuje poprawnie
i zrodlo danych nie zostaje zainstalowane. Gdy
chcialbym recznie je dodac w Panelu Sterowania (32-bit ODBC)
to po wybraniu rodzaju sterownika (Access)
Pojawia sie blad:
The setup routines for The Microsoft Access Driver (*.mdb) ODBC driver
could
not be loaded due to system error code 1157
A nastepnie :
Could not load the setup or translator library.
To samo sie dzieje przy probie instalowania
innego sterownika np dBase
Czy ktos moze mi powiedziec jak z tego wybrnac?
(nie chcialbym korzystac z bazy przez DAO aby
w przyszlosci ewentualnie mozna bylo zmieniac typ bazy)
Robert Kolud
rob@wsi.edu.pl
Próbuje wstawić rekord do bazy za pomocą metody COMMAND
i na serwerze ( jak testuje to lokalnie na PWSie to wszystko jest OK)
wyskakuje mi następujący błąd:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable
query.
Nie mam pojęcia co jest źle !!!
A oto ten kawałek kodu:
---------------
Dim PolaczZBaza1
Dim DaneZBazy
Dim SQL_wpisz
Dim SQL_podglad
Dim PolaczZBazaTowar
Dim DaneZBazyTowar
Dim WstawDoBazy
Set PolaczZBaza1 = Server.CreateObject ("ADODB.Connection")
PolaczZBaza1.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("dataaz_danych.mdb"))
Set PolaczZBazaTowar = Server.CreateObject ("ADODB.Connection")
Set DaneZBazyTowar = Server.CreateObject ("ADODB.Recordset")
PolaczZBazaTowar.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("dataaz_danych.mdb"))
SQLTowar = "SELECT * FROM towary WHERE id_towaru=" &
Request.QueryString("id_towaru")
DaneZBazyTowar.OPEN SQLTowar, PolaczZBazaTowar, 1, 2
Set WstawDoBazy = Server.CreateObject ("ADODB.Command")
Set WstawDoBazy.ActiveConnection = PolaczZBaza1
SQLTowar = "SELECT * FROM towary WHERE id_towaru=" &
Request.QueryString("id_towaru")
DaneZBazyTowar.OPEN SQLTowar, PolaczZBazaTowar, 1, 2
SQL_wpisz = "INSERT INTO Koszyk (id_klienta, id_towaru, ilosc) VALUES
(?,?,?)"
WstawDoBazy.CommandText = SQL_wpisz
WstawDoBazy.Prepared = TRUE
WstawDoBazy.Parameters.Append WstawDoBazy.CreateParameter ("id_klienta",200,
,255 )
WstawDoBazy.Parameters.Append WstawDoBazy.CreateParameter ("id_towaru",200,
,255 )
WstawDoBazy.Parameters.Append WstawDoBazy.CreateParameter ("ilosc",200,
,255 )
WstawDoBazy ("id_klienta") = Request.Cookies ("id_klienta")
WstawDoBazy ("id_towaru") = Request.QueryString("id_towaru")
WstawDoBazy ("ilosc") = 1
WstawDoBazy.Execute
DaneZBazyTowar.Close
PolaczZBazaTowar.Close
PolaczZBaza1.Close
---------------
Dzięki za pomoc
PS: a może błąd jest po stronie serwera - ale jaki ????
POZdrawiam
Larry
przy okazji mam pytanie jak widzicie moje posty wysylane za posrednictwem
bramki email-news (www.newsgate.pl) psuja watki, czy ktos wie jak temu
zaradzic? Pczte wysylam z Outlooka i nie wiem czy to moj program pocztowy
czy bramka gubi referencje do danego watku.
-----Original Message-----
From: Wojciech 'KuRcZaK' Kucia [mailto:kurc@firma.hoga.pl]
Sent: Friday, August 31, 2001 5:00 PM
To: pl-comp-www-server-s@newsgate.pl
Subject: Re: zawiesznie sie IE i web serwera przy wolaniu ADODB
A propowales sie polaczyc nie poprzez plikowy DSN a przez
Connection String
?
Tzn. np. tak o ile to baza MSAccess:
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=c:sciezka_dopliku.mdb;password=robakidziobakiii
nneptaki;Defau
ltDir=c:;DriverId=25;FIL=MS
Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;
PageTimeout=5;
SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
Wojciech Kucia -=[ KuRcZaK ]=-
__("< --------- mailto:kurc@firma.hoga.pl ---------<-
\__/ ---------- http://www.kurczakrally.w.pl
---------<-
^^ ---------------ICQ : 7321839
---------------<-
--
Archiwum grupy: http://niusy.onet.pl/pl.comp.www.server-side
Użytkownik "Pachocki, Pawel" <Pawel.Pacho@f2virt.onet.plnapisał w
wiadomości news:164EA92EE2DDD4
119DA40050DA83578D1E9@mailserver3.domdata.depfa-it.com...
to nie jest sprawa zle zdefiniowanego polaczenia, przed awarja wszystko
dzialalo, a poza tym jak pisalem w VBAsic okienkowym wszystko dziala. Cos
mysle, ze sie popsulo w IIS lub w rejestrach windowsa, ale
przeinstalowanie
IIS nie pomoglo, ponowna rejestracja ADODB tez (choc to chyba bylo
dzialanie
bez sensu skoro ADO dziala w innych aplikacjach)
pozdr, Pawel.
przy okazji mam pytanie jak widzicie moje posty wysylane za posrednictwem
bramki email-news (www.newsgate.pl) psuja watki, czy ktos wie jak temu
zaradzic? Pczte wysylam z Outlooka i nie wiem czy to moj program pocztowy
czy bramka gubi referencje do danego watku.
| -----Original Message-----
| From: Wojciech 'KuRcZaK' Kucia [mailto:kurc@firma.hoga.pl]
| Sent: Friday, August 31, 2001 5:00 PM
| To: pl-comp-www-server-s@newsgate.pl
| Subject: Re: zawiesznie sie IE i web serwera przy wolaniu ADODB
| A propowales sie polaczyc nie poprzez plikowy DSN a przez
| Connection String
| ?
| Tzn. np. tak o ile to baza MSAccess:
| Set Conn=Server.CreateObject("ADODB.Connection")
| Conn.Open "DRIVER={Microsoft Access Driver
| (*.mdb)};DBQ=c:sciezka_dopliku.mdb;password=robakidziobakiii
| nneptaki;Defau
| ltDir=c:;DriverId=25;FIL=MS
| Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;
| PageTimeout=5;
| SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
| Wojciech Kucia -=[ KuRcZaK ]=-
| __("< --------- mailto:kurc@firma.hoga.pl ---------<-
| \__/ ---------- http://www.kurczakrally.w.pl
| ---------<-
| ^^ ---------------ICQ : 7321839
| ---------------<-
--
Archiwum grupy: http://niusy.onet.pl/pl.comp.www.server-side
________________________________________________________
<%@ LANGUAGE=VBSCRIPT %
<% Option Explicit %
<!--#include virtual="adovbs.inc"--
<HTML
<BODY
<%
Dim strUser, strPassword, strName, strStreet, strCity, strZip, strMail,
strPhone
'lacze sie z baza
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" &
"DBQ=H:Serwer
ootaseaza.mdb"
objConn.Open
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "users", objConn, adOpenForwardOnly, adLockOptimistic,
adCmdTable
objRS.AddNew
objRS("user") = "strUser"
objRS("password") = "strPassword"
objRS("name") = "strName"
objRS("street") = "strStreet"
objRS("city") = "strCity"
objRS("zip") = "strZip"
objRS("mail") = "strMail"
objRS("phone") = "strPhone"
objRS.Update
objRS.MoveFirst
%
<% Do While Not objRS.EOF %
Uzytkownik <% objRS("user") %zostal dodany do bazy.
<%
objRS.MoveNext
Loop
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%
</BODY
</HTML
<!-- POLAMANE LINIE --
_________________________________________________________
a moj problem jest nastepujacy - udalo mi sie raz wlozyc dane do bazy i
pozniej te dane usunalem recznie w Accesie i teraz mam cos takiego:
_________________________________________________________
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open
registry key 'Temporary (volatile) Jet DSN for process 0x2b0 Thread 0x498
DBC 0x13c8024 Jet'.
/zaloz.asp, line 15
_________________________________________________________
Powiedzcie o co chodzi...
Unforgiver
"DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("dbf.mdb")
Niedawno prosiłem Was o pomoc w rozwiązaniu zapisu do bazy Access'a.
Problem udało mi się już rozwiązać poza jednym - głównym.
Wszystkie operacje - podłączenie ADO do bazy, zapis z SQL'a, odczyt danych i
generowanie strony - działają bez zarzutu na stacji roboczej, na której stoi
serwer www (PWS+IIS4). Odczyt działa również na pozostałych stacjach sieci.
Problem pojawia się przy zapisie. ADO wykrzacza się wtedy z następującycm
komunikatem:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updatable
query
W MS Knowledge Base, w artykule Q175168, napisano, iż problem ten ma cztery
główne źródła:
1. Konto "gościa" dla serwera internetowego używane lokalnie (IUSR_MACHINE)
nie jest rozpoznawane przez pozostałe stacje robocze jako prawidłowe konto
sieciowe. Rozwiązaniem ma być zmiana domyślnego konta klienta na takie,
które istnieje na serwerze domeny, w której znajduje się dana stacja robocza
z PWS (np.: IUSR_SERVER). OK, odpaliłem Console Manager'a i zmieniłem konto
z lokalnego na ogólno sieciowego guest'a z prawami na moją stację - BRAK
EFEKTU!
2. Konto używane do pracy stacji roboczych z PWS nie ma wystarczających
uprawnień do pliku bazy. Musi ono mieć prawo odczytu i zapisu do pliku a
ponadto zapisu do katalogu (tylko bazy Access'a).
Sprawdziłem - Jest OK.
3. Podłączenie ADO nie ma uprawnień zapisu do bazy (zostało uruchomione w
złym trybie).
Sprawdziłem - mam: Conn.Mode = adModeReadWrite Or adModeShareDenyNone
4. W ODBC DSN może być ustawiona opcja "Read Only" - ALE NIE JEST!
Piszą jeszcze, że może to też być związane ze składnią SQL'a (kaskadowy
update) - co napewno nie ma u mnie miejsca, gdyż używam najzwyklejszego
INSERT INTO.
Jeśli ktoś z Was miał już ten sam problem i znalazł *działające*
rozwiązanie, to będę bardzo wdzięczny za pomoc.
Odpowiedz proszę kierować również na PRIV'a - nie subskrybuję tej grupy.
Hkey_Local_MachineSoftwareODBC
everyone musi mieć full control
Użytkownik Łukasz Szmit <lukaszmi@priv2._NO_SPAM_.onet.plw wiadomości do
grup dyskusyjnych napisał:38e5e@news.vogel.pl...
Witam!
Niedawno prosiłem Was o pomoc w rozwiązaniu zapisu do bazy Access'a.
Problem udało mi się już rozwiązać poza jednym - głównym.
Wszystkie operacje - podłączenie ADO do bazy, zapis z SQL'a, odczyt danych
i
generowanie strony - działają bez zarzutu na stacji roboczej, na której
stoi
serwer www (PWS+IIS4). Odczyt działa również na pozostałych stacjach
sieci.
Problem pojawia się przy zapisie. ADO wykrzacza się wtedy z następującycm
komunikatem:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updatable
query
W MS Knowledge Base, w artykule Q175168, napisano, iż problem ten ma
cztery
główne źródła:
1. Konto "gościa" dla serwera internetowego używane lokalnie
(IUSR_MACHINE)
nie jest rozpoznawane przez pozostałe stacje robocze jako prawidłowe konto
sieciowe. Rozwiązaniem ma być zmiana domyślnego konta klienta na takie,
które istnieje na serwerze domeny, w której znajduje się dana stacja
robocza
z PWS (np.: IUSR_SERVER). OK, odpaliłem Console Manager'a i zmieniłem
konto
z lokalnego na ogólno sieciowego guest'a z prawami na moją stację - BRAK
EFEKTU!
2. Konto używane do pracy stacji roboczych z PWS nie ma wystarczających
uprawnień do pliku bazy. Musi ono mieć prawo odczytu i zapisu do pliku a
ponadto zapisu do katalogu (tylko bazy Access'a).
Sprawdziłem - Jest OK.
3. Podłączenie ADO nie ma uprawnień zapisu do bazy (zostało uruchomione w
złym trybie).
Sprawdziłem - mam: Conn.Mode = adModeReadWrite Or adModeShareDenyNone
4. W ODBC DSN może być ustawiona opcja "Read Only" - ALE NIE JEST!
Piszą jeszcze, że może to też być związane ze składnią SQL'a (kaskadowy
update) - co napewno nie ma u mnie miejsca, gdyż używam najzwyklejszego
INSERT INTO.
Jeśli ktoś z Was miał już ten sam problem i znalazł *działające*
rozwiązanie, to będę bardzo wdzięczny za pomoc.
Odpowiedz proszę kierować również na PRIV'a - nie subskrybuję tej grupy.
1.
<%
On Error Resume Next
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ=f:inetpubwwwrootwnioskidbaza.mdb ;Driver={Microsoft
Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rstK = Server.CreateObject("ADODB.RecordSet")
rstK.Open "wnioski", Conn, 1, 4, 2
rstK.AddNew
rstK("temat") = Request.Form("temat")
rstK("imie_nazw") = Request.Form("imie_nazw")
rstK("rodz_oprac") = Request.Form("rodz_oprac")
rstK("stan") = Request.Form("stan")
rstK("komor") = Request.Form("komor")
rstK("data") = Now()
rstK("uzas") = Request.Form("uzas")
rstK("numer_proc") = Request.Form("numer_proc")
rstK.UpdateBatch
%
2.
<%
Dim zmienna
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=wnioski;UID=;PWD="
sql = "SELECT * FROM wnioski"
%
Napisalem strone przy pomcy ktorej wyswietla sie dane przy pomocy ASP i
druga
wyswietla dane z bazy ACCESS.
Ale wydaje mi sie ze 2 sposob jest lepszy (sql = "SELECT * FROM wnioski").
Wywolanie SQL-owe jest wg mnie bardziej oczywiste.
Czy mozecie mi napisac jak 1 sposob przedstawic na podstawie przykladu 2
(zapis do bazy przy pomocy SQL).
Nie jest dla mnie do konca wiadome co sie dzieje w 4-6 liniach (w
przykladzie 1)
jak dla mnie to w 1 przykladzie zapisujesz do bazy a w 2 z bazy dane
odczytujesz
<%
On Error Resume Next
obsluga ew bledow
Set Conn = Server.CreateObject("ADODB.Connection")
tworzysz obiekt ADODB.Connection
Conn.Open "DBQ=f:inetpubwwwrootwnioskidbaza.mdb ;Driver={Microsoft
Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
otwierasz baze
Set rstK = Server.CreateObject("ADODB.RecordSet")
tworzysz obiekt ADODB.RecordSet
rstK.Open "wnioski", Conn, 1, 4, 2
otwierasz recordseta
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
wiec chyba wiesz co oznaczaja te dane ( wiecej
http://localhost/iishelp/ado/docs/adomth03%5F1.htm )
rstK.AddNew
dodajesz nowy rekord
rstK("temat") = Request.Form("temat")
rstK("imie_nazw") = Request.Form("imie_nazw")
rstK("rodz_oprac") = Request.Form("rodz_oprac")
rstK("stan") = Request.Form("stan")
rstK("komor") = Request.Form("komor")
rstK("data") = Now()
rstK("uzas") = Request.Form("uzas")
rstK("numer_proc") = Request.Form("numer_proc")
rstK.UpdateBatch
zatwierdzasz zmiany
2.
<%
Dim zmienna
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=wnioski;UID=;PWD="
sql = "SELECT * FROM wnioski"
%
a tu sie jeszcze nic nie dzieje, musisz doprawic do tego recordset'a np
SET RS= CONN.EXECUTE(sql)
albo jakas inna metoda
Mam sobie bazkę w Accessie 97 podłączoną przez ODBC i obsługiwaną
przez PWS+ASP+Win98. Wszystko działa.
Przegrałem na W2000+IIS i działa już tylko prawie wszystko. Przy
próbie wpisanania czegoś zapytaniem
INSERT into Nowe(imie, nazwisko, adres, telefon, email, www,
zajmuje) values('q', 'w', 'ee', '', '', '', 'ee')
dostaję komunikat:
<KOMUNIKAT
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation must use an
updateable query.
/chomik/dodaj.asp, line 25
</KOMUNIKAT
Oczywiście samo zapytanie jest jak najbardziej OK. Skonwertowałem bazę
na Accessa 2000, ale nie pomogło. To samo na SQL Serwerze działa
dobrze. Ktoś ma jakieś pomysły?
Daje też kawałek kodu, ale chyba to nikomu nic nie powie, bo jest
dobrze.
<%
if Request("tak") = "tak" then
Set Conn = Server.CreateObject("ADODB.Connection")
'On Error Resume Next
Conn.Open "DSN=chomik;UID=;PWD="
sql = "INSERT into Nowe(imie, nazwisko, adres, telefon, email, www,
zajmuje) values('" & Request("imie") & "', '" & Request("nazwisko") &
"', '" & Request("adres") & "', '" & Request("telefon") & "', '" &
Request("email") & "', '" & Request("www") & "', '" &
Request("zajmuje") & "')"
response.write sql
' on error resume next
Set rst = Conn.Execute(sql)
%
Chomik
___ __ Marcin Nowak_ __ mailto:cho@t19.ds.pwr..wroc.pl ***
/ _)/ )_ ___ _ __(_) / ) http://www.t19.ds.pwr.wroc.pl/~chomik/
( (_/'_ ) . /' V / )/' ~) IRC-Chomik, tel. 71 734475 134 *****
_(_/ (_/\__(_/2_/(_/(_/\_) Wroclaw University of Technology **
<html
<head
</head
<body
<p
<%
openstr = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & Server.MapPath("KAPITAL_DB.mdb")
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open openstr
sql = "SELECT * FROM KAPITAL " '& _
' "FROM roster " & _
' "ORDER BY jersey; "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, cn, 3, 3
On Error Resume Next
rs.MoveFirst
Do While Not rs.EOF
Response.Write Server.HTMLEncode(_
rs.Fields("NUMER") & ", " & _
rs.Fields("NAZWISKO") & " " & _
rs.Fields("IMIE") & ", " & _
rs.Fields("BRUTTO")) & "<br" & vbCrLf
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%
</p
</body
</html
............................................................................................................................................................
Skrypt pochodzi z ksiazki "Programowanie internetowych baz danych".
Ponizej
zamieszczam jego listing.
Nadmieniam ze nie dziala zaden (tn dziala .za pierwszym razem. a potem sie
zawiesza) plik z rozszerzeniem *.asp. I tak jest tylko na moim komputerze.
............................................................................
............................................................................
....
<html
<head
</head
<body
<p
<%
openstr = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & Server.MapPath("KAPITAL_DB.mdb")
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open openstr
sql = "SELECT * FROM KAPITAL " '& _
' "FROM roster " & _
' "ORDER BY jersey; "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, cn, 3, 3
On Error Resume Next
rs.MoveFirst
Do While Not rs.EOF
Response.Write Server.HTMLEncode(_
rs.Fields("NUMER") & ", " & _
rs.Fields("NAZWISKO") & " " & _
rs.Fields("IMIE") & ", " & _
rs.Fields("BRUTTO")) & "<br" & vbCrLf
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%
</p
</body
</html
............................................................................
............................................................................
....
class DB_Example extends DB_Sql {
var $Host = "twoj_host";
var $Database = "baza_phplib";
var $User = "uzytkownik";
var $Password = "haslo";
}
Problem w tym, że nie bardzo wiem co tu wpisać, gdyż analogiczny skrypt ASP
(który działa!) trochę inaczej inicjuje połączenie po przez np. taką
komendę:
st_ConnString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=d:azadanych.mdb"
Gdzie w poniższej klasie dodać sterownik?
class DB_Sql {
var $Host = "";
var $Database = "";
var $User = "";
var $Password = "";
var $UseODBCCursor = 0;
var $Link_ID = 0;
var $Query_ID = 0;
var $Record = array();
var $Row = 0;
var $Errno = 0;
var $Error = "";
var $Auto_Free = 0; ## set this to 1 to automatically free results
Dostaję takie błędy:
Warning: SQL error: [Microsoft][Menedżer sterowników ODBC] Nie można
odnalezc nazwy zrodła danych, a nie ma podanego sterownika domyslnego, SQL
state IM002 in SQLConnect in db_odbc.inc on line 35
Database error: Link-ID == false, odbc_pconnect failed
ODBC Error: 0 ()
Session halted.
Nigdy wczesniej nie uzywalem polaczen przez ODBC. Ktoś wie jak to zrobić
przez PHPLib?
Irek
Pewnie proste i glupie pytanie, ale od kilku dni dopiero w asp pisze.
Chce wpisac dane z formularza do pliku accessa: klienci.mdb. Oto glowna
czesc kodu wpisujaca:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ=e:INETPUBwwwrootKLIENCI.MDB;" & "Driver={Microsoft Access
Driver (*.mdb)}"
lepiej podlaczyc jest baze poprzez ODBC
SQL = "INSERT * INTO Klienci (Imie, Nazwisko, Adres, Wartosc_zakupow) "
SQL = SQL & "VALUES ("
SQL = SQL & "'" & Request.Form("Imie") & "', "
SQL = SQL & "'" & Request.Form("Nazwisko") & "', "
SQL = SQL & "'" & Request.Form("Adres") & "', "
SQL = SQL & "'" & Request.Form("Wartosc_zakupow") & "')"
On Error Resume Next
Conn.Execute(SQL)
%
Mozesz przetestowac skladnie SQL'a tworzac zapytanie w Access'ie (kod sql).
Zazwyczaj znajdziesz wtedy gotowy wygenerowany kod.
Uzyj metody response.write by wyswietlic kod ktory wygenerowala twoja strona
Np response.write sql
Po wpisaniu danych w formularzu i wcisnieciu klawisza submit
( czyli wykonaniu: <form action="zapisz.asp" method="POST"), wypisuje mi
sie blad:
--------Błąd składniowy w instrukcji INSERT INTO.
Probowalem tez zabrac znak * po slowie INSERT, ale wtedy mam blad:
--------Za mało parametrów. Oczekiwano 4.
Jak sie tego pozbyc, jak zrobic aby zadzialalo, co jest zle???????
Dziekuje za chec pomocy i odpowiedz, pozdrawiam
--
Piotrek ( gubit )
gu@poczta.onet.pl
www.gubit.prv.pl
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
miałem podobny problem i rozwiązałem go tak:
DIM rst_WYR, Conn_WYR, sql_WYR
Set Conn_WYR = Server.CreateObject("ADODB.Connection")
Conn_WYR.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " &_
"DBQ=E:XXX.mdb"
sql_WYR = "SELECT * FROM XXX where ......................"
Set rst_WYR = Conn_WYR.Execute(sql_WYR)
Do While not rst_WYR.eof
if not rst_WYR("nazwa kolumny")="" then
response.write "<TD bgcolor=#FFFFFF<font color=#000000 size=1
face=Verdana"
response.write rst_WYR("nazwa kolumny")
response.write "</td"
else
response.write "<td bgcolor=#FFFFFF<font color=#FF0000 size=1
face=Verdana-</font</td"
end if
rst_WYR.movenext
Loop
Conn_WYR.Close
nie wiem na ile ci to pomoże ale takim sposobem dobieram się do bazy która
praktycznie jest ciągle otwarta.
Kacper
"Panel" <pa@go2.plwrote in message Witam
Mam pewną bazę danych napisaną w Accesie (*.MDB).Aby działała z serwerem
IIS (win XP sp2) dodałem do pliku uprawnienia dla uzytkownika "Konto
Internet Guest (ServverIUSR_Igor)"
Do bazy odwołuje się:
Application("DSN") = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" &
Server.MapPath("Portal.mdb") set Conn = CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset") Conn.Open Application("DSN")
stSQL = "SELECT * FROM Labele_Interfejsu"
rs.Open stSQL,Conn,0,1
LabelWyglad = rs("Label")
rs.close
W momencie, gdy baza jest otwarta i próbuję wejść na stronę pojawia się
komunikat:
Typ błędu:
Microsoft JET Database Engine (0x80004005)
Nie można użyć pliku ''; plik jest już w użyciu.
Zamykam bazę i stronka działa bez problemu. Mojemu qumplowi udało się coś
zmienić i mógł pracować z otwartą bazą, a więc powyższy błąd mu nie
wyskakiwał. Problem w tym, że on sam nie pamięta co zmieniał, system padł
w między czasie, wiec nawet nie ma zbardzo jak sprawdzić. Jeśli się nie
mylęto przestawił coś w usawieniach serwera IIS, tylko co?
--
Pozdrawiam
panel
pa@go2.pl
Po raz pierwszy probuje polaczyc sie z Accessem i dostaje juz palpitacji
serca. Oto kod
<%@ Import Namespace="System.Data" %
<%@ Import Namespace="System.Data.OleDb" %
<script language="VB" runat="server"
Sub Page_Load(Sender As Object, E As EventArgs)
Dim Connection As OleDbConnection
Dim ConnString As String
Dim Command As OleDbDataAdapter
Dim SQL As String
Dim DS As New DataSet
ConnString = "DRIVER={Microsoft Access Driver
(*.mdb)};PROVIDER=Microsoft.Jet.OLEDB.4.0 ;Data source=" &
Server.MapPath("klasa.mdb")
SQL="SELCET * FROM klasa"
Connection = New OleDbConnection(ConnString)
Command = New OleDbDataAdapter(SQL,Connection)
Command.Fill(DS, "dane")
MyDataGrid.DataSource = DS.Tables("dane").DefaultView
MyDataGrid.DataBind()
End Sub
</script
Wywala mi cos takiego
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: Could not find
installable ISAM.
Source Error:
Line 22:
Line 23:
Line 24: oCommand.Fill(oDS, "dane") (to na czerwono)
ASP.NET Build:1.4000.2914.16
Blagam o pomoc
Przemyslaw Malak
| W jaki sposób utworzyć źródło danych z bazki pod NT ? Muszę dać znać
| adminowi aby takowe źrodło utworzył czy może jest jakaś inna metoda ?
| chodzi o wyciagniecie danych z bazy na strony www?
| Jesli NT to najlepiej ASP.
Nie chodziło mi o same korzystanie z bazy tylko o samo przygotowanie do
korzystania.
Z tego co wiem to po utworzeniu bazki trzeba ja umieścić (tak przy okazji
to
gdzie się ją wrzuca ?) na www, potem zeby mozna bylo z niej korzystac
trzeba
utworzyc DSN znaczy sie źrodlo danych. No i nie wiem czy samemu sie je
jakos
tworzy czy trzeba dac znac adminowi. Niestety w bazach-www jeste zielony
:)
A może wogóle się to inaczej robi ?? Może nie tworzy sie DSN-a ??
A może ktoś nakierowalby mnie na jakies faq-i, opisy itp. lub opisał cały
proces na liscie ?
Zakladam ze korzystasz z ASP i choc troche wiesz jak sie uzywa obiektow db.
DSN tworzysz zalenie od bazy danych. Niektore (np. ms sql 7) maja tzw
provaidery ktore nie potrzebuja dsn,
Laczysz sie tak:
Conn.ConnectionString =
"PROVIDER=SQLOLEDB;SERVER=nazwa_serwera;UID=login;" & _
"PWD=password;DATABASE=nazwa_bazy_danych"
Mozna rowniez nie korzystac z dsn, pomagajac sobie MapPath np:
Set MyConn = Server.CreateObject("ADODB.Connection")
conString = "DBQ=" & Server.MapPath("MyDatabase.mdb")
Myconn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & conString
SQL="Select * from employee"
http://www.devasp.com/samples/datamappath.asp
wiec istnienie dsn zalezy jak chcesz sie laczyc do bazy ( porownanie
http://www.powerasp.com/content/database/dsn_vs_dnsless.asp )
Jak sie laczyc z baza:
http://mavweb.net/asp-samples/database-connection-strings.asp
http://www.web-savant.com/users/kathi/asp/samples/tut/Database_Connec...
sp
To polecam:
http://www.aspin.com/home/tutorial/database/dbconn/dsnless
http://www.aspin.com/home/tutorial/database/dbconn
Mozesz sprobowac bez dsn, nie pytajac sie admina, jesli nie zadziala to
wtedy trza swistaka zagadac:))
Napisz jaka bazke chcesz uzywac i czy to jest asp (bo moze zbednie sie
rozpisuje). Wiecej tez na priva zapraszam.
1) Mam baze danych (chwilowo w Accesie, ale mozna ja spokojnie przerobic
:) ok. 2500 rekordow.
2) Potrzebuje z tego wygenerowac 2500 HTML'i - w kazdym HTML jeden
rekord (wszystkie strony sa generowane na podstawie jednego szablonu)
Czy jest cos, co potrafi to zrobic (narzedzia platne/darmowe)?
Moge odsprzedac Ci licencje na kilka stanowisk na ponizszy PROGRAM:
Zapisz jako robHTMLe.vbs i "upusc" plik bazy na ten skrypt:
==================================
Option Explicit
Dim args
Set args = WScript.Arguments
If args.Count<1 Then
WScript.Echo("Podaj sciezke do bazy"&vbCrLf&_
"jako argument wywolania skryptu")
WScript.Quit(0)
End If
Dim Conn, RS, fso, f, i
Set Conn = WScript.CreateObject("ADODB.Connection")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Conn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};"&_
"DBQ=" & args.Item(0)
Conn.Open
Set RS = Conn.Execute("SELECT TOP 10 * FROM Customers")
Do While Not RS.Eof
Set f = fso.OpenTextFile("c:"&RS(0)&".html",2,true)
f.Write("<TABLE")
For i=0 To RS.Fields.Count-1
f.Write("<TR<TD"&RS.Fields(i).Name&"</TD<TD"&_
RS(i)&"</TD</TR")
Next
f.Write("</TABLE")
f.Close
Set f = Nothing
RS.MoveNext
Loop
Conn.Close
Set Conn = Nothing
Set fso = Nothing
=========================================
Pomóżcie !!!
Zenek
W niższych należy zainstalować DataAccessa który jest na płytce offica 97
bodajże w katalogu support lub Misc
Potem najlepiej Jet4Sp3 a potem jet4SP6 a potem madc2.6 lub 2.7
potem powinny byc wszsytkie sterowniki
Myślę że użycie "Microsoft Access Driver (*.mdb)" powinno załatwić kwestię
nazewnictwa. ale nie dostepu do plików .mde
Sprawdzam dalej jak będę mądrzejszy to opiszę
Bohdan
Użytkownik "Krzysztof Naworyta" <k.nawor@datacomp.com.plnapisał w
wiadomości
Użytkownik "Raphael Posmyk" <raphael.pos@komm-kontroll.denapisał
| O co trzeba zadbać, aby pełny MS Word komunikował się z Access RT via
| ODBC ? (korespondencja seryjna)
| Jezeli ma byc przez ODBC to nie ma znaczenia czy z Access (a raczej
| z JET-MDB, sam Access nie musi byc nawet zainstalowany), czy z MS
| SQL Server, ORACLE, Sybase, ... Wazne abys mial zainstalowane 'ODBC
| Driver Manager', odpowiednie sterowniki ODBC dla danego RDBMS
| no i oczywiscie ODBC DSN.
| Innymi słowy co (jakie pliki) ...
| Jakie pliki - trudno powiedziec. MDAC + <pakiet ODBC dla danego RDBMS.
w CD Office'97 ValuePack jest sobie całe ODBC 3.0
Niby mógłbym sie tym posiłkować - ale:
- to wymusza dodatkowy niezależny proces instalacji (a ja wolałbym w
jednym - głównym)
- coś mi mówi, że jest tego za dużo o kilka dll'i w porównaniu z moimi
potrzebami
;-)
- jako, że stare - może mi sie z czymś pogryźć w trakcie instalacji
| ... i jak (jakie wpisy do rejestru)
| zadeklarować w Setup Wizard ?
| Hm, nie wiem jak to powiedziec wizardowi, ale obejzyj sobie
| HKEY_LOCAL_MACHINESOFTWAREODBC. Tam jest wszystko, co
| potrzebne do definicji 'ODBC DSN' (jakbys sie nie mogl w tym
| odnalezc to daj znac). Mozy wyexportuj sobie jakies DSN.
| Bedziesz wiedzial jakie klucze musi dodac setup wizard.
O, jak się eksportuje "jakieś DSN" ?
Tak - zaglądałem do rejestru, nie tylko do tej gałęzi ale wszędzie gdzie
tylko pojawia się "ODBC"
Może ja dziury w całym szukam, ale:
- wydaje się, że "samo" sie nie zainstaluje - czyli muszę do instalki
dołożyć jakieś ddl'e + wpisy do rejestru
(ale nie mam pod ręką "czystego" komputera by móc to teraz zweryfikować)
- po instalacji różnych sharewarów mam w rejestrze dla ODBC wpisy dla
access'a:
po polsku, angielsku, włosku i niemiecku ;-)
czyli chłopcy jakos to robili.
W Setup Wizard 97 mogę dołożyć do instalki komponenty ISAM, ODBCDirect,
czy
"ODBC suport with SQL Server" ale z tego co pamiętam, żaden z nich nie
zapewnia utworzenia DSN="MS Access 97 Database"
(co jakoś, nie wiedzieć czemu, wcale mnie nie dziwi ;-)
Dochodzi problem nazewnictwa - drivery są, ale właśnie: niemiecki, włoski,
angielski ...
Wszystkie takie same - ale ja musze przecież znać tę właściwą nazwę aby ją
w
ciągu połączenia zadeklarować:
Connection:="DSN=Baza danych MS Access;DBQ=" & dbN & ";FIL=MS Access"
^^^^^^^^^^^^^^^^^^^^^^^^^
albo:
Connection:="DSN=MS Access 97 Database;DBQ=" & dbN & ";FIL=MS Access"
^^^^^^^^^^^^^^^^^^^^^^^^^
Rozsądnym rozwiązaniem wydaje się (???) stworzyć coś własnego ...
Niestety w tym temacie mój poziom lamerstwa jest zbyt wysoki by sobie
poradzić samemu.
Być może wyciągam złe wnioski i źle dedukuję ...
Za wszelkie naprowadzenie na własciwy trop
z góry wdzięczny
--
KN
P.S.
W międzyczasie dowiedziałem się, że mogę użyć połączenia via OLEDB
(dzięki Bohdan !)
Wystarczy nie deklarować niczego ponad te dwa:
ActiveDocument.MailMerge.OpenDataSource _
Name:="C:MyDB.mdb", _
SQLStatement:="SELECT * FROM [MyTable]"
Niestety w Office 97 jest to stanowczo zbyt wolne w porównaniu z ODBC
w CD Office'97 ValuePack jest sobie całe ODBC 3.0
Niby mógłbym sie tym posiłkować - ale:
- to wymusza dodatkowy niezależny proces instalacji (a ja wolałbym w
jednym - głównym)
- coś mi mówi, że jest tego za dużo o kilka dll'i w porównaniu z moimi
potrzebami
;-)
- jako, że stare - może mi sie z czymś pogryźć w trakcie instalacji
Pewnie daloby sie rozpakowac MDAC i na podstawie tam zawartych
setup.inf skonstruowac wlasny - duzo roboty. Zaloze sie, ze
istnieje gdzies (u M$) wersja MDAC do takiego wlasnie uzytku
jak Ty planujesz. W koncu inni tez jakos to robia !
O, jak się eksportuje "jakieś DSN" ?
Mialem na mysli zapamietanie wybranych wpisow rejestow
do pliku.reg (RegEdit).
Tak - zaglądałem do rejestru, nie tylko do tej gałęzi ale wszędzie gdzie
tylko pojawia się "ODBC"
Może ja dziury w całym szukam, ale:
- wydaje się, że "samo" sie nie zainstaluje - czyli muszę do instalki
dołożyć jakieś ddl'e + wpisy do rejestru
Moment ! Skopiowanie odpowiednich plikow (*.dll) w odpowiednie
miejsce tak aby srodowisko ODBC bylo zainstalowane to jedna rzecz.
Tu nie znam zlotego srodka jak to zrobic (patrz tez wyzej)
Inna rzecz to tworzenie DSN (Data Source Name). To mozna osiagnac
przez wpisy do rejestrow.
(ale nie mam pod ręką "czystego" komputera by móc to teraz zweryfikować)
Zapamietaj nastepujace linijki w pliku (rafal.reg), a potem
dopelkliknij na niego w explorerze:
---------------------------8<-----------------------------
REGEDIT4
[HKEY_CURRENT_USERSoftwareODBCODBC.INIRafal]
"Driver"="C:\WINNT\System32\odbcjt32.dll"
"DBQ"="C:\TEMP\rafal.mdb"
"Description"="Rafala sposob na dodanie DSN"
"DriverId"=dword:00000019
"FIL"="MS Access;"
"SafeTransactions"=dword:00000000
"UID"="Smyk"
[HKEY_CURRENT_USERSoftwareODBCODBC.INIRafalEngines]
[HKEY_CURRENT_USERSoftwareODBCODBC.INIRafalEnginesJet]
"ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"
[HKEY_CURRENT_USERSoftwareODBCODBC.INIODBC Data Sources]
"Rafal"="Microsoft Access Driver (*.mdb)"
---------------------------8-----------------------------
Teraz znajdziesz w administratorze ODBC piekny DSN ;-)
W Setup Wizard 97 mogę dołożyć do instalki komponenty ISAM, ODBCDirect, czy
"ODBC suport with SQL Server" ...
A ogolny ODBC Support masz ? W wizardzie do Access 2.0 pamietam
ze byl.
... ale z tego co pamiętam, żaden z nich nie
zapewnia utworzenia DSN="MS Access 97 Database"
Ale moze dopisywac klucze do rejestrow ?
To co za roznica (patrz wyrzej).
(co jakoś, nie wiedzieć czemu, wcale mnie nie dziwi ;-)
Dlaczego ? A jezeli chciales zrobic instalke dla systemu C/S
z tabelami podwiazanymi ze zrodla ODBC ?
Dochodzi problem nazewnictwa - drivery są, ale właśnie: niemiecki, włoski,
angielski ...
Wszystkie takie same - ale ja musze przecież znać tę właściwą nazwę aby ją w
ciągu połączenia zadeklarować:
Connection:="DSN=Baza danych MS Access;DBQ=" & dbN & ";FIL=MS Access"
^^^^^^^^^^^^^^^^^^^^^^^^^
albo:
Connection:="DSN=MS Access 97 Database;DBQ=" & dbN & ";FIL=MS Access"
^^^^^^^^^^^^^^^^^^^^^^^^^
Wszystkie zainstalowane sterowniki ODBC sa w
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI.
Tez mam kilka roznych jezykowo access'ow, ktore jednak
wszystkie uzywaja tego samego pliku (dll). No wiec jaka
roznica ?
Moze Setup Wizard moze jakos odpytac rejestry ?
Rozsądnym rozwiązaniem wydaje się (???) stworzyć coś własnego ...
Niestety w tym temacie mój poziom lamerstwa jest zbyt wysoki by sobie
poradzić samemu.
Nie boj ! Grupa nie zostawi KN na lodzie ;-)
Być może wyciągam złe wnioski i źle dedukuję ...
W najgorszym wypadku dojdziesz *do celu* na okolo.
Ciao, Rafal
Jacek Tokarski napisał(a) w wiadomości:
<8504ll$th@sinope.coi.pw.edu.pl...
Witam grupowiczow,
Czy istnieje mozliwosc zautomatyzowania konfiguracji ODBC podczas
pierwszego
uruchomienia programu?
Program w C++Builder, baza Access dostep do niej przez ODBC.
Aktualnie ODBC konfigurowane jest recznie przed pierwszym uruchomieniem
programu.
Osobiscie zostalbym przy tym rozwiazaniu, lecz moj promotor zyczylby sobie
cos takiego (praca dyplomowa).
Moze ktos przewalczyl ten problem?
Za wszelkie wskazowki z gory dzieki.
Pozdrawiam
Jacek
Czesc !
Nie wiem czy dobrze rozumiem problem.
Jezeli chcesz by uzytkownik dokonal wyboru DataSource z listy istniejacych w
systemie mozesz je pobrac funkcja SQLDataSources.
Jesli chcialbys dodac do listy istniejacych zrodel w systemie musisz:
do ODBC.ini dodac wpisy ( w przykladzie uzylem nazwy USERDEFINE),sciezki do
dll sa przykladowe
w sekcji
[ODBC 32 bit Data Sources]
USERDEFINESOURCE=USERDEFINESOURCE (*.MDB) (32 bit)
w sekcji
[USERDEFINESOURCE]
Driver32=C:WINNTSystem32odbcjt32.dll
Przypuszczam ze driver do ACCESSA masz w systemie zainstalowany. Gdybys
chcial go w systemie zainstalowac recznie to w ODBCINST.INI
[ODBC 32 bit Drivers]
Microsoft Access Driver (*.mdb) (32 bit)=Installed
[Microsoft Access Driver (*.mdb) (32 bit)]
Driver=C:WINNTSystem32odbcjt32.dll
Setup=C:WINNTSystem32odbcjt32.dll
32Bit=1
No i zostaje rejestr
[HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIMicrosoft Access Driver
(*.mdb)]
"UsageCount"=dword:00000004
"Driver"="C:WINNTSystem32odbcjt32.dll"
"Setup"="C:WINNTSystem32odbcjt32.dll"
"FileUsage"="2"
"FileExtns"="*.mdb"
"ConnectFunctions"="YYN"
"APILevel"="1"
"DriverODBCVer"="3.51.170003"
"SQLLevel"="0"
[HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIODBC Drivers]
"Microsoft Access Driver (*.mdb)"="Installed"
[HKEY_CURRENT_USERSoftwareODBCODBC.INIUSERDEFINESOURCE]
"Driver"="C:WINNTSystem32odbcjt32.dll"
"Description"="USERDEFINESOURCE"
[HKEY_CURRENT_USERSoftwareODBCODBC.INIODBC Data Sources]
"USERDEFINESOURCE"="Microsoft Access Driver (*.mdb)"
Robilem cos takiego z inna baza, dlatego moga jeszcze dojsc ustawienia w
rejestrze charakterystyczne dla accessa
bodajze opierajac sie na przykladzie
[HKEY_CURRENT_USERSoftwareODBCODBC.INIUSERDEFINESOURCE]
dojdzie jeszcze galaz Engine, ale to mozesz juz sprawdzic.
Pozdrowienia
Rony
main.o [Warning] In function `main':
[Linker error] undefined reference to `SQLAllocHandle@12'
[Linker error] undefined reference to `SQLSetEnvAttr@16'
[Linker error] undefined reference to `SQLAllocHandle@12'
[Linker error] undefined reference to `SQLDriverConnect@32'
[Linker error] undefined reference to `SQLDisconnect@4'
[Linker error] undefined reference to `SQLFreeHandle@8'
[Linker error] undefined reference to `SQLFreeHandle@8'
Problem może wyda się niektórym banalny, ja go jeszcze nie potrafię
przeskoczyć. Czy w poniższym kodzie zabrakło jakiegoś pliku nagłówkowego,
niezgodność typów zmiennych, czy może jest zbyt niska temperatura za oknem?
#include <stdio.h
#include <stdlib.h
#include <windows.h
#include <odbcinst.h
#include <sql.h
#include <sqlext.h
#include <sqltypes.h
#include <sqlucode.h
#define MAXBUFLEN 1024
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc = SQL_NULL_HDBC;
SQLHSTMT hstmt = SQL_NULL_HSTMT;
int main(int argc, char *argv[])
{
SQLRETURN retcode;
SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={Microsoft Access Driver (*.mdb)};"
"UID=Admin;PWD=;"
"DBQ=database.mdb";
SQLCHAR ConnStrOut[MAXBUFLEN];
SQLSMALLINT cbConnStrOut = 0;
system("CLS");
printf("
Proba podlaczenia do bazy danych data.mdb za pomoca
ODBC.
");
retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER)
SQL_OV_ODBC3, SQL_IS_INTEGER);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLDriverConnect(hdbc, NULL, ConnStrIn, SQL_NTS,
ConnStrOut,
MAXBUFLEN, &cbConnStrOut,
SQL_DRIVER_NOPROMPT);
if (retcode == SQL_SUCCESS || retcode ==
SQL_SUCCESS_WITH_INFO)
{
MessageBox(NULL, "Podłączenie do bazy danych Access
powiodło się", "ODBC Info",
MB_ICONEXCLAMATION|MB_OK|MB_SETFOREGROUND);
// reszta kodu programu
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return (0);
}
}
}
}
if ((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))
{
MessageBox(NULL, "Podłączenie do bazy danych Access nie powiodło
się",
"ODBC Info",
MB_ICONEXCLAMATION|MB_OK|MB_SETFOREGROUND);
}
return 0;
}
Z góry dziękuję za pomoc.
Radzior
radz@poczta.onet.pl
Użytkownik Grzegorz Arkit <G.Ar@im.pz.zgora.plw wiadomości do grup
dyskusyjnych napisał:8887vk$52@okapi.ict.pwr.wroc.pl...
Sebastian Ciesielski wrote in message ...
| Robi się toto tak (fragment skryptu - jak to zrobić opisano na stronie
INNO
| SETUP):
| [Files]
| Source: "ścieżka_gdzie_taki_plik_jestBdeInst.dll"; DestDir: "{tmp}"
| [Run]
| Filename: "{sys}REGSVR32.EXE"; Parameters: "/S ""{tmp}BdeInst.dll"""
| W ten sposób uruchomisz oryginalny instalator BDE - niestety
anglojęzyczny.
| Pozdrawiam
| Użytkownik Grzegorz Arkit <G.Ar@im.pz.zgora.plw wiadomości do grup
| dyskusyjnych napisał:87r582$ea@okapi.ict.pwr.wroc.pl...
| Czesc!
| Czy ktos ma moze opis instalacji ODBC (jakie pliki, wpisy do rejestru
itd)
| lub namiary gdzie cos takiego mozna znalezc. Najlepszy bylby skrypt do
| InnoSetup.
| Grzesiek
Sorry, chodzilo o instalacje ODBC a nie BDE
Grzesiek
to fgramgment koduy rejestracji wpisu do ODBC (akurat dla bazy *.mdb):
if not Myreg.KeyExists('SOFTWAREODBCODBC.INIAlias') then
begin
MyReg.OpenKey('SOFTWAREODBCODBC.INIODBC Data Sources',True);
myReg.WriteString('Alias','Microsoft Access Driver (*.mdb)');
MyReg.Free;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('SOFTWAREODBCODBC.INIAlias',TRUE);
myReg.WriteString('DBQ','sciezka do bazy');
myReg.WriteString('Description','opis');
myReg.WriteString('Driver','C:WINDOWSSYSTEModbcjt32.dll');
myReg.WriteInteger('DriverId',25);
myReg.WriteString('FIL','MS Access;');
myReg.WriteInteger('SafeTransactions',0);
myReg.WriteString('UID','');
MyReg.Free;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('SOFTWAREODBCODBC.INIAliasEngines',TRUE);
MyReg.CreateKey('Jet');
MyReg.Free;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('SOFTWAREODBCODBC.INIAliasEnginesJet',TRUE);
MyReg.WriteString('ImplicitCommitSync','');
MyReg.WriteInteger('MaxBufferSize',2048);
MyReg.WriteInteger('PageTimeout',5);
MyReg.WriteInteger('Threads',3);
MyReg.WriteString('UserCommitSync','Yes');
end;
| Czesc !
| Mam maly problem z przygotowaniem instalki za pomoca InstallShield w
| wersji 2.12.
| Program uzywa bazy danych Access'a 2000 i przy instalacji chce zeby
| zainstalowal sterowniki i zalozyl DSN.
| Czy moze ktorys z szanownych kolegow mial juz ten problem lub wie jak
mozna
| go rozwiazac ?
| Pozdrawiam
| Krzysiek
ja wprawdzie nie korzystam z Access2000, ale DSN zrobilem , dodajac
odpowiednie wpisy w rejestrze:
var: MyReg:TRegistry;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
if not Myreg.KeyExists('SOFTWAREODBCODBC.INI
azwa_aliasu) then
begin
MyReg.OpenKey('SOFTWAREODBCODBC.INIODBC Data Sources',True);
myReg.WriteString('Nazwa_Aliasu','Microsoft Access Driver (*.mdb)');
MyReg.Free;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('SOFTWAREODBCODBC.ININazwa_Aliasu',TRUE);
myReg.WriteString('DBQ','sciezka_do_bazy_danych .mdb');
myReg.WriteString('Description',opis ble ble');
myReg.WriteString('Driver','C:WINDOWSSYSTEModbcjt32.dll');
myReg.WriteInteger('DriverId',25);
myReg.WriteString('FIL','MS Access;');
myReg.WriteInteger('SafeTransactions',0);
myReg.WriteString('UID','');
MyReg.Free;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('SOFTWAREODBCODBC.ININazwa_AliasuEngines',TRUE);
MyReg.CreateKey('Jet');
MyReg.Free;
MyReg:=TRegistry.Create;
Myreg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('SOFTWAREODBCODBC.ININazwa_AliasuEnginesJet',TRUE);
MyReg.WriteString('ImplicitCommitSync','');
MyReg.WriteInteger('MaxBufferSize',2048);
MyReg.WriteInteger('PageTimeout',5);
MyReg.WriteInteger('Threads',3);
MyReg.WriteString('UserCommitSync','Yes');
end;
odtworzylem po prostu zapis ODBC
dziala
gwyhyr
Czesc !
Dzieki za odpowiedz.
Problem tkwi w czym innym.
Zapisy do rejestru DSN sa jak najbardziej prawidlowe.
Instalka nie instaluje mi prawidlowo ODBC - sterownikow.
Jak tworze instalke z InstallShield'em do programu z baza Acces 97
(installShield ma opcje wlaczania sterownikow do Acces'a97) to przy
tworzeniu dyskietek wyswietla komunikat o problemie z lokalizacja plikow.
Plikow tym nie ma. Wiec wydaje mi sie ze InstallShield ma stary wykaz plikow
wymaganych przez ODBC do acces'a.
Dlatego pytam czy moze ktorys z szanownych kolegów spotkal sie z tym
problemem i jakos go rozwiazal.
Pozdrawiam
Krzysiek
Panie Dariuszu, zanim Pan Paweł odpowie to ja zacytuję
tymczasem odpowiedź z
zamierzchłych czasów, która padła w tej sprawie na liście,
[ciach]
Hope this helps ;)
Pozdrawiam,
Morris
O widzi Pan, Panie Lodku, znalazł Pan mój stary post :)
Ale poniżej konkretnie dodanie DSN dla Accessa:
<CODE
const
ODBC_ADD_DSN = 1;
ODBC_CONFIG_DSN = 2;
ODBC_REMOVE_DSN = 3;
ODBC_ADD_SYS_DSN = 4;
ODBC_CONFIG_SYS_DSN = 5;
ODBC_REMOVE_SYS_DSN = 6;
ODBC_REMOVE_DEFAULT_DSN = 7;
function SQLConfigDataSource(Parent:HWND;
Request:Word;
Driver:PChar;
Attributes:PChar):Boolean; stdcall;
external 'odbccp32.dll';
procedure AddDSN();
var
DSNAttributes : String;
ODBCDriver : String;
begin
ODBCDriver:='Microsoft Access Driver (*.mdb)';
DSNAttributes:='DSN=MyDSN' + #0 +
'UID=admin' + #0 +
'SafeTransactions=0' + #0 +
'FIL=MS Access;' + #0 +
'DriverId=25' + #0 +
'Description=Mój DSN' + #0 +
'DBQ=D:dokumentyPawełpliki.mdb' + #0 + #0;
if SQLConfigDataSource(0,
ODBC_ADD_SYS_DSN,
PChar(ODBCDriver),
PChar(DSNAttributes)) then
MessageBox(0,'OK','...',MB_ICONINFORMATION);
end;
</CODE
A co do parametrów (DSNAttributes), to już trzeba emirycznie. Ja to zrobiłem
tak:
w Menedżerze ODBC dodałem sobie DSN a potem sprawdziłem w rejestrze
w HKLMSOFTWAREODBCODBC.INI<utworzony DSNco zostało zapisane :)
Pozdrawiam,
Morris
PS. Jeśli ktoś potrzebuje help do ODBC to służę - format HTML Help, po
spakowaniu
RAR-em około 2 MB (2208388 bajtów).
Morris
pawel.paw@domdata.depfa-it.com
/*
add
permission java.util.PropertyPermission "file.encoding","read";
permission java.lang.RuntimePermission
"accessClassInPackage.sun.jdbc.*";
in java.policy
*/
import java.sql.*;
import java.awt.*;
import java.applet.*;
import javax.swing.*;
/*
<APPLET CODE="test.class" WIDTH="500" HEIGHT="500"
</APPLET
*/
public class test extends Applet {
Connection con;
public void init() {
try {
String filename = "C:\Documents and
Settings\lukasz\Desktop\license generator\Licenses.mdb";
String database = "jdbc:odbc:Driver = { Microsoft Access Driver
(*.mdb) };DBQ =";
database += filename.trim() + ";DriverID = 22;READONLY = false}";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(database, "", "");
} catch (Exception e) {
e.printStackTrace();
}
}
public void paint (Graphics g) {
try {
String[] tableTypes = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet rs = metadata.getTables(null, null, null, tableTypes);
int y = 50;
int i = 0;
while (rs.next()) {
String str = rs.getString(3);
String oneLine = "Table " + str;
g.drawString(oneLine, 20, y);
y += 15;
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
MyÂślaÂłem, Âże chociaÂż to bĂŞdzie dziaÂłaĂŚ, ale tu dostajĂŞ
nastêpuj¹ce b³êdy:
sao.wszia.edu.pl/~s9904/error2.jpg
Pytanie:
a) Dlaczego tak sie dzieje ?
b) i jak mozna temu zaradzic?
z naciskiem na b ;-)
Problem:
Konsola wypluwa cos takiego:
Start...
Rejestrowanie sterownika...
Nawiazywanie polaczenia...
Nieee
java.sql.SQLException: [Microsoft][Menedżer sterowników ODBC] Nie można
odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego
java.sql.SQLException: [Microsoft][Menedżer sterowników ODBC] Nie można
odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Baza.<init(Baza.java:41)
    at Baza.main(Baza.java:63)
Kod zrodlowy wyglada tak:
        try {
            System.out.println("Rejestrowanie sterownika...");
            Class.forName
("sun.jdbc.odbc.JdbcOdbcDriver"); Â Â Â Â Â Â Â Â Â
            System.out.println("Nawiazywanie
polaczenia..."); Â Â Â Â Â Â Â Â Â Â Â
            con = DriverManager.getConnection
("jdbc:odbc:ksiazka.mdb", "Koniu", "");
            System.out.println("Tworzenie polecenia...");
            stmt = con.createStatement();
            System.out.println("Wydanie polecenia...");
            stmt.executeUpdate(CreatePhoneBook);
           Â
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            System.out.println("Nieee");
            e1.printStackTrace();
            System.out.println(e1.toString());
        }
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.err.print("ClassNotFoundException");
            e.printStackTrace();
        }   Â
Jakies pomysly tudziez domysly?
Pozdrawiam
Koniu
Ja tez z tym walczylam i znalazlam nastepujaca skladnie, ktora dziala:
Connection conn1=DriverManager.getConnection("jdbc:odbc:driver={Microsoft
Access Driver (*.mdb)};DBQ=users.mdb");
Agata
© 2009 Najlepszy miesiąc kawalerski w Polsce !!! - Ceske - Sjezdovky .cz. Design downloaded from free website templates