mam problem,
chciałbym przy pomocy Visual Basica for Excel (nie otwierając skoroszytu
zapisanego na dysku) dowiedzieć się jakie ten skoroszyt zawiera arkusze
(nazwy arkuszy)
Możesz przy pomocy takiej funkcji VB korzystającej z obiektów ADOX:
Public Function NazwyArkuszy(nazwaSkoroszytu As String) As String
Dim sCon As String
Dim oADOX As Object
Dim oTable As Object
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
nazwaSkoroszytu & ";Jet OLEDB:Engine Type=23;" & _
"Extended Properties='Excel 8.0;HDR=YES'"
Set oADOX = CreateObject("ADOX.Catalog")
oADOX.ActiveConnection = sCon
For Each oTable In oADOX.Tables
If Right(oTable.Name, 1) = "$" Then
NazwyArkuszy = NazwyArkuszy & Left(oTable.Name, Len(oTable.Name) - 1)
& ";"
End If
Next
End Function
Podaje ona nazwy arkuszy odzielone przecinkami.
Jeśli umieścisz ją w module standartowym, to będziesz mogła ją zastsować w
komórce.
Możesz również skorzystać z takiego makra do wyświetlenia wyników tej
funkcji:
Sub Pokaż()
MsgBox NazwyArkuszy("D:Moje dokumentyeszyt36.xls")
End Sub
napisalem taką procedurkę:
Sub export2Base()'dzialajacy kod
' Zmienne do polaczenia
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
' Polacz z Bazą
strConnect = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = H:
Delegacje.mdb"
'strConnect = "DSN=OutlookData;"
conn.Open strConnect
strSQL = "SELECT * FROM Tpodroze;"
rst.Open strSQL, conn
' Dodaj wiersz do bazy
rst.AddNew
rst.Fields("From")' = Item.UserProperties.Find("ArrivalFrom").Value
'rst.Fields("BusinessUnitName") =
Item.UserProperties.Find("ComboBox2").Value
rst.Update
'koniec
rst.Close
conn.Close
End Sub
Przy probie wyslania rekordu pojawia sie problem nastepujacy:
"Current RecordSet does not support Updating. This may be limiatation
of the provider, or of the selected locktype"
Czy mozna to obejsc? jak updateowac baze?
W artykule news:f9nkdq$1lm$1@nemesis.news.tpi.pl,
niejaki(a): God Itself z adresu <g@heaven.innapisał(a):
witam,
czy mozna bez otwierania pliku pobrac nazwe arkusza. w pliku jest zawsze
jeden arkusz
do dyspozycji mamy jedynie sciezke dostepu
Mozna do tego celu użyc technologii ADO. Np:
Sub GetSheetName()
Dim objConn As Object
Dim objCat As Object
Dim sWorkbook As String
Dim sConnString As String
Dim sTableName As String
Dim SheetName As String
'Tutaj trzeba zmienić nazwę i folder
sWorkbook = "c:azaaza2.xls"
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sWorkbook & ";" & _
"Extended Properties=Excel 8.0;"
Set objConn = CreateObject("ADODB.Connection")
objConn.Open sConnString
Set objCat = CreateObject("ADOX.Catalog")
Set objCat.ActiveConnection = objConn
SheetName = Replace(Replace(objCat.Tables(0).Name, "'", ""), "$", "")
MsgBox SheetName
objConn.Close
Set objCat = Nothing
Set objConn = Nothing
End Sub
Tajan
U¿ytkownik "Tajan" <ta@interia.plnapisa³ w wiadomo¶ci
Witam!
Sub test1()
End Sub
u mnie wyglada tak:
Sub ImportDB()
Application.ScreenUpdating = False
Dim oRs As New ADODB.Recordset
Dim oConn As New ADODB.Connection
Dim tablica(1 To 100, 1 To 3) As Variant
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=F:OLEDB1.xls;Extended Properties=""Excel 8.0;"""
oRs.Open "Select * from [d$A1:B10]", oConn, adOpenStatic
oRs.MoveFirst
For i = 1 To oRs.RecordCount
tablica(i, 1) = oRs.Fields(0).Value
tablica(i, 2) = oRs.Fields(2).Value
tablica(i, 3) = oRs.Fields(4).Value
oRs.MoveNext
Next i
Sheets("import").Range("A1:C100").Value = tablica
oRs.Close
oConn.Close
Application.ScreenUpdating = True
End Sub
kod wywala sie na samym poczatku: User defined error. Moze brak jakis
references albo dll?
A jeszcze zmień rozmiar tablicy w kodzie oraz liczbę i indeksy pól
recordseta,
które sa do niej pobierane!
Juz sobie poradzilem:
Makro ma postac:
Sub ImportDB()
Application.ScreenUpdating = False
Dim oRs As New ADODB.Recordset
Dim oConn As New ADODB.Connection
Dim tablica(1 To 100, 1 To 3) As Variant
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=J:OLEDB1.xls;Extended Properties=""Excel 8.0;"""
oRs.Open "Select * from [d$A1:B7]", oConn, adOpenStatic
oRs.MoveFirst
For i = 1 To oRs.RecordCount
tablica(i, 1) = oRs.Fields(0).Value
tablica(i, 2) = oRs.Fields(1).Value
oRs.MoveNext
Next i
Sheets("import").Range("A1:B7").Value = tablica
oRs.Close
oConn.Close
Application.ScreenUpdating = True
End Sub
plik importowany zawiera zakres do importu A1:B7, ale pojawiala sie bledy w
zaimportowanej tablicy:
- 1 wiersz nie jest importowany
- wartosci nieliczbowe nie sa importowane
czy w prypadku pierwszego wiersza chodzi o RowNumbers = False?
btw mialbym pytanie czy mozna przerobic to makro na funkcje ktora by
importowala wartosci z pliku?
Posługuję się zwykle Ms SQl 2005 /2000
Ostatni raz robiłem coś z MsAcees jeszcze w VStudio 2003
Mam Taki problem
W serwer exploratorze myszką prawy klawisz AddConnectio
Zapala się wizzard i wybieram w nim Other/ .NetFramework data provider
OleDb
Continue i w CBoxie OleDbProvider wybieram Microsoft Jet 4.0 OleDbProvider,
na kompie mam Office 2003 z MsAccess
W polu Server or file name wpisuję c:Test.mdb i naciskam klawisz Test
connection
odpowiada Test connection successed!
Teraz aby zapisać naciskam button OK a tu taki monit
"Object reference not set to an instance of object"
Pomyślałem, pewnie zepsuło mi się windows albo VStudio.
Zainstalowałem więc na "gołym kompie" po kolei:-
MsOffice 2003 prof ( z Accessem), MsSql2005 i VStudio 2005
No i jest tak samo.
Pewnie robie coś źle
Proszę o pomocAccessowców
Pozdrawiam
Andrzej
Witam!
Mam mały problem. Podczas kopiowania plików pow. 500Mb - zarowno z
partycji
na partycje jak i w obszarze tej samej partycji - WC pokazuje mi "Blad nie
moge odczytac...", Eksplorator Windows to samo z inna inf. "Zasoby
systemowe
nie pozwalaja, aby ukonczyc operacje...". O co tu chodzi???? Dodac moge,
iz
problem ten wystepowal rowniez na moim starym HDD... niedawno kupilem nowy
(S IV80GB), system instalowalem od poczatku i to samo...???...
Win2k - zainstalowane wszystkie poprawki. A1000Mhz, KT7A, 512RAM, Asus GF2
U mnie zawadzała ta poprawka:
Q320176: Pakiet Service Pack 6 dla aparatu baz danych Microsoft Jet 4.0
Pablik
On Sat, 28 May 2005 07:37:06 +0200, trainer wrote:
A np. http://www.twojemiasto.pl/ = działa u ciebie ta mapa? bo u mnie pod FF
nie a pod IE tak
Nie, ale wygląda mi to na niestaranność twórców strony. I mapa nie działa,
i w okienku po prawej w ff mam "Microsoft JET Database Engine error..."
| U mnie podpisanie dyspozycji działa, ale tylko jak nie ma w niej polskich
| znaków.
a u mnie teraz przyjął z ł i ó - chyba się jakoś odblokował :-))
Ciągle coś nie tak:
wpisuję tytuł płatności "łąść", w momencie kiedy się podaje hasło do klucza
widzę "Tytuł płatności ????", po kliknięciu "zatwierdz przelew" firefox
wykonał nieprawidłową operację. :Drugie podejście dało komunikat "Nie
udało się stwierdzić prawidłowości podpisu elektronicznego. Dyspozycja
została odrzucona".
Mam pytanie, bo pomimo usilnych poszukiwan, nie udalo mi sie znalezc
odpowiedzi.
Licho szukales ;-)
Mam baze danych programu Access. Interfejs do bazy robie w C++Builder.
Pytanie jest takie: Jak zabezpieczyc bezposredni dostep do bazy danych,
zeby jednoczesnie mozna bylo dostac sie do niej za pomoca komponentow ADO
z Buildera podajac odpowiednie haslo. Kiedy zakladam haslo na baze danych
w Access'ie to nie moge sie polaczyc z nia nawet podajac to haslo w
komponencie ADOConnection w ciagu laczenia z baza danych. Rozumiem ze
wyjsciem jest po prostu szyfrowanie danych w bazie danych, ale czy mozliwe
jest wlasnie po zalorzeniu w Access'ie hasla na na baze danych, dostac sie
do niej wlasnie przez komponenty ADO? I jesli tak to jak to zrobic?
Uzytkownicy i ich hasla nie sa przechowywane w pliku mdb
lecz w tzw. pliku systemowym (workgroup file). Jesli
otwierasz plik accessem, uzywa on domyslnego pliku
systemowego. Jesli chcesz polaczyc sie spoza accessa
z plikiem mdb, musisz podac _jawnie_ gdzie znajduje
sie ow plik systemowy:
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:somepathmydb.mdb;" & _
*"Jet OLEDB:System Database=MySystem.mdw"*, _
"myUsername", "myPassword"
Ciao, Smyk
Przeczytaj wszystkie posty z tego wątkuBrak odpowiedzi na moje pytanie dał mi do myślenia, że może jednak źle to
pytanie podstawiłem. Spróbuję jeszcze raz.
Powiedźmy, że mam taki fragment kod:
Dim Object As ADODB.Connection
Objekt.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;PWD=haslobazy;DATA
SOURCE=C:katalogaza.mdb;Jet OLEDB:System
database=C:katalogPlikMdw.mdw", "nazwa usera", "HasloUsera"
Fragment ten zapewnia mi połączenie z bazą o nazwie podanej w ciągu
połączenia. Działa to bez zarzutu dopóki nie założyłem hasła bazy danych.
Pomimo prowidłowego(?) podania hasła w ciągu połączenia (PWD=haslobazy)
wyskakuje mi błąd. Gdzie popełniałem błąd?
Pozdrawiam.
Dim Object As ADODB.Connection
Czy "Object" nie jest przypadkiem zarezerwowanym slowem ?
Objekt.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" &_
"PWD=haslobazy;" & _
"DATA SOURCE=C:katalogaza.mdb;" & _
"Jet OLEDB:System database=C:katalogPlikMdw.mdw", _
"nazwa usera", "HasloUsera"
Zauwaz, ze haslo jest podawane dwa razy. W Connect-stringu
(PWD=haslobazy) i jako argument. Obawiam sie, ze haslo podane
jako argument przeslania haslo podane w connect-stringu (to samo
tyczy sie "UID=<user" i odp. argumentu)!
Czy ADO potrafi poprawnie obchodzic sie z haslem zalozonym
na baze z poziomu accessa (nie to w *.mdw) nie jestem pewien.
Obawiam sie jednak, ze PDW/Password w connect-stringu i odp. argument
nie maja z nim nic wspolnego.
Moze udloby sie jakos podac przez "Jet OLEDB:???=<haslo_bazy" ?
Np. "Jet OLEDB:Database Password=<haslo_bazy" ??? Give it a try :-)
Ciao, Smyk
Przeczytaj wszystkie posty z tego wątku
Jak powinien wygladaæ Connection String?
Moze tak?
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data
Source=C:aza.mdb;Mode=Share Deny None;Extended Properties="";Jet
OLEDB:System database=C:PROGRA~1MICROS~2OfficeSYSTEM.MDW;Jet
OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine
Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk
Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database
Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt
Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet
OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
Wpisz sobie w oknie instrukcji bezposrednich:
?CurrentProject.Connection.ConnectionString
Rafal Posmyk:
| Krzysztof Czuryło:
|
| Nic mi o tym nie wiadomo (czyt. nie można).
|
| Moj help dla a2k mowi ze mozna - F1(CREATE TABLE ...)
Może jakiś _działający_ przykład, bo chyba mamy innego helpa (Accessa)?
Może nie tyle działający przykład, lecz cytat z Help-a (A2K):
CREATE TABLE - instrukcja
Składnia
CREATE [TEMPORARY] TABLE tabela (pole1 typ [(rozmiar)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [indeks1] [, pole2 typ [(rozmiar)]
[NOT NULL] [indeks2] [, ...]] [, CONSTRAINT indeks_wielopolowy [, ...]])
(...)
Atrybut WITH COMPRESSION został dodany do kolumn CHARACTER z powodu zmiany przedstawienia znaku do formatu Unicode. Znaki w
reprezentacji Unicode niezmiennie wymagają dwóch bajtów dla każdego znaku. Dla istniejących baz danych aparatu MicrosoftR Jet które
zawierają głównie dane znakowe mogłoby to oznaczać, że rozmiar bazy danych niemalże podwoiłby się po konwersji do formatu Microsoft
Jet w wersji 4.0. Jednakże reprezentacja Unicode wielu zestawów znaków poprzednio jednobajtowych (SBCS), może łatwo być
skompresowana do jednego bajtu. Jeśli kolumna typu CHARACTER zostanie zdefiniowana z tym atrybutem, dane automatycznie będą
skompresowane jako że są one zapisywane i dekompresowane w momencie pobrania z kolumny.
(...)
Niestety Grzegorz dostaje komunikat, ze aparat bazy danych Microsoft
Jet nie moze rozpoznac kwerendy strSql :-(
Przy okazji - jak przedstawic wynik tej kwerendy (czyli liczbe) w polu
tekstowym?
Niestety Grzegorz dostaje komunikat, ze aparat bazy danych Microsoft
Jet nie moze rozpoznac kwerendy strSql :-(
Przy okazji - jak przedstawic wynik tej kwerendy (czyli liczbe) w polu
tekstowym?
</cite
Sorki, źle Ciebie zrozumiałem, chyba chodziło Ci o coś w stylu:
strSql = "Select Count(*) From (" & _
"Select Pole1 From qry1 Where " & strKryteria & " " & _
"Group By Pole1) As T"
Dim wynik As Integer
wynik = currentproject.Connection.Execute(strSql)(0)
Problem polega na tym, że powyższy kod używa obiektów ADO dostępu do
danych,
a takich obiektów nie ma standardowo w A97. Wyjścia są dwa:
1) przerobić wszystko na DAO,
2) wykorzystać w A97 ADO, jednak ze względu na to, że A97 nie ma obiektu
CurrentProject, będziesz musiał zmodyfikować tę linijkę z błędem, na coś w
stylu:
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & CurrentDB.Name
cnn.Open
no i potem dalej:
Set rsMojaTabela.ActiveConnection = cnn
Wydaję mi się, że wariant 1) będzie łatwiejszy do zrobienia.
Pozdrawiam
Grzegorz
Czy można prosic o bardziej sczegółowe dane jak to przerobic na DAO bo
wywala typ mismatch (niezgodność typów)?
Wystarczy programik, ale bardzo prosty, coś w stylu:
Public Function KopiujCzescPliku(strPathWe As String, _
strPathWy As String, lngDl As Long)
On Error GoTo Err_KopiujCzescPliku
Dim strBufor As String
strBufor = Space(lngDl)
Open strPathWe For Binary Access Read As #1
Open strPathWy For Binary Access Write As #2
Get #1, 1, strBufor
Put #2, 1, strBufor
End_KopiujCzescPliku:
On Error Resume Next
Close #1
Close #2
Exit Function
Err_KopiujCzescPliku:
MsgBox Err.Number & vbNewLine & Err.Description
Resume End_KopiujCzescPliku
End Function
A wywoływany np.
KopiujCzescPliku "D:BazaWzorcowa.mdb", "D:BazaUszkodzona", 100
gdzie 100 to ilość bajtów, które chcesz zastąpić - spróbuj
eksperymentalnie
dobrać odpowiednią wielkość - u mnie było to 30 tys.
Pozdrawiam
Grzegorz
Dzięki za wsparcie duchowe :) Choć mirmir ma w pewnym sensie rację
- chciałoby się bez cudowania napisać:
SELECT Count(DISTINCT nrz) FROM Zespoly
ale (cytat z pomocy do Accessa):
"Microsoft Jet SQL nie obejmuje następujących cech ANSI SQL:
. Instrukcji związanych z bezpieczeństwem, jak COMMIT, GRANT i LOCK
. Słowa DISTINCT w funkcjach agregacji"
(J)
Naprawa bazy danych nie pomaga!!!
Pliku .ldb NIE MA!!!
Jacek Chmiel napisał(a) w wiadomości: <7thodd$2od@news.ipartners.pl...
Mam dokładnie TO SAMO!
Otwieram bazę jako jedyny użytkownik -- pojawia się komunikat:
"The Microsoft Jet database enigine stopped because you and
another user are attempting to change the same data at the same time"
(Access 97EN, SP-2, Windows NT4.0EN SP5)
Naprawa bazy danych nie pomaga!!!
Pliku .ldb NIE MA!!!
kilka propozycji
1) import do innego pliku
2) wrzuc na komputer z mozliwoscia sledzenia otwartych plikow NT - Control
panel -serwer, win9X - netwatch, novell - nie pamietam, ale tez jest i to
na serwerze
3) dla Jacka - wywal SP5 - ja wywalilem, a raczej cale WinNT, bo namieszalo
sp tak namieszal, ze nic nie chcialo dzialac. Czy z SP4 dzialalo ?
SLV
Mam dokładnie TO SAMO!
Otwieram bazę jako jedyny użytkownik -- pojawia się komunikat:
"The Microsoft Jet database enigine stopped because you and
another user are attempting to change the same data at the same time"
(Access 97EN, SP-2, Windows NT4.0EN SP5)
Naprawa bazy danych nie pomaga!!!
Pliku .ldb NIE MA!!!
Nie wiem czy to będzie to, ale przyjrzałbym się własnie brakowi pliku
.ldb (o ile baza nie jest otwierana na wyłączność - wówczas Access go
nie tworzy, sprawdziłem). Aby userzy mogli pracować w wielodostępie,
muszą mieć prawo do tworzenia plików w tym katalogu gdzie znajduje się
baza, po to aby móc pracować w wielodostępie ;-) (chodzi właśnie o
możność utworzenia .ldb, bo w Acc'97 po zamknięciu bazy przez
ostatniego, plik jest kasowany)
Pytanie z ciekawości: czy ów komunikat pojawia się od razu gdy otwierasz
bazę (z np. przytrzymanym Shift, o ile go nie zablokowałeś ;-) ?
Żadnych
otwartych formularzy, recordsetów, nic?
Pozdrawiam -
Stanley
Function F1(Q156 As Integer)
Dim cnA As ADODB.Connection
Dim rsA As ADODB.Recordset
Set cnA = New ADODB.Connection
With cnA
.Provider = "Microsoft.Access.OLEDB.10.0"
.Properties("Data Provider").Value = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = "C:9887.mde"
.OPEN
End With
Set rsA = New ADODB.Recordset
With rsA
Set .ActiveConnection = cnA
.source = "SELECT * FROM 995628 WHERE [156]=" & Q156
.LockType = adLockOptimistic
.CursorType = adOpenForwardOnly
.OPEN
End With
With CodeContextObject
Set .Q156.Recordset = rsA
End With
End Function
Z gory dzieki
VVlodek
Szczeze mowiac nie slyszalem o tych funkcjach. Gdzie moge znalesc ich opis -
najlepiej po polsku:(
To nie funkcje, tylko predykat (co za slowo!) w skaldni SQLa.
Niestety w Acc2000 po polsku, potem juz chyba po angielsku:
w 2000:
F1-Microsoft Jet SQL-Jezyk operowania danymi-Podkwerendy SQL
Piotr
Rafał napisał(a) w wiadomości: <8bmu87$kv@h1.uw.edu.pl...
Witam
Polecam kursy w firmie Altkom www.altkom.com.pl
Mają kursy Accessa dla początkujących , średnio-zaawansowanych i
zaawansowanych (ok. 4 dni) po 7 godzin.
Cean kursu - ok. 1200 zł (chyba warto zainwestować skoro masz dostać dużą
podwyżkę)
Niedawno probowalem sie zalapac na taki kurs -altkom, edusoft. Oto co sie
dowiedzialem w tych firmach:
Firmy te maja kursy trzystopiniowe :
1. Dla poczatkujacych (otwieranie okien, zapisywanie na dysku, menu itp.).
Kursy co 2 tygodnie
2, Dla srednio zaawansowanych (tworzenie b.prostych baz za pomoca kreatorow
i menu, w zasadzie nic o VBA). kursy co 2 miesiace
3. Dla zaawanoswanych (VBA a w tym (DAO, Microsoft jet), tworznienie
prostych programow w VBA). Praktycznie brak kursow.
Brak jest chetnych na kursy 3 stopnia, na ktorych nie mozna uzyskac
certyfikatu. Np. w edisoft najblizsze szkolenie (z cetryfikatem, 1900zl) z
accessa odbiedzie sie dopiero na przelomnie maja i kwietnia.
Dodam że nikt inny nie korzysta z tego pliku, nie ma na nim żadnych haseł
ani kont. Próbowałem zaimportować potrzebne mi tabele do innego pliku ale
nic z tego.
Pomocy
Pozdr
Przemek
Aparat bazy danych Microsoft Jet nie może otworzyć pliku.
Plik jest już otwarty do wyłącznego użytku przez innego użytkownika lub
potrzebne jest zezwolenie na oglądanie jego danych.
Dodam że nikt inny nie korzysta z tego pliku, nie ma na nim żadnych haseł
ani kont. Próbowałem zaimportować potrzebne mi tabele do innego pliku ale
Spróbuj skasować plik: NAZWABAZY.LDB...
Pamiętaj że zablokowany-uszkodzony może być też plik z uprawnieniami
grupy roboczej, w Acc97 domyślnym jest C:WINDOWSSYSTEMSYSTEM.MDW.
Spróbuj go zmienić (w Acc97 przy pomocy C:WINDOWSSYSTEMWRKGADM.EXE)
na 'świeżą' kopię...
DO BOJU...
SWid
Przemson napisał(a) w wiadomości: <8fdqaj$ic@portraits.wsisiz.edu.pl...
Cześć
Dziś rano kiedy przyszedłem do pracy odpalając bazkę w Accessie zobaczyłem
magiczny napis:
Aparat bazy danych Microsoft Jet nie może otworzyć pliku.
Plik jest już otwarty do wyłącznego użytku przez innego użytkownika lub
potrzebne jest zezwolenie na oglądanie jego danych.
Dodam że nikt inny nie korzysta z tego pliku, nie ma na nim żadnych haseł
ani kont. Próbowałem zaimportować potrzebne mi tabele do innego pliku ale
nic z tego.
Pomocy
Pozdr
Przemek
Coś takiego przytrafiło mi się, gdy przechowywałem
bazę na serwerze z włączoną kompresją plików.
Pomógł systematyczny backup.
pra@box43.gnet.pl
Nie można uruchomić aplikacji. Plik informacyjny grupy roboczej nie istnieje
lub został otwarty w trybie wyłączności przez innego użytkownika.
Co jest tego przyczyną i co z tym zrobić? (Plik sprzedaz.mdw istnieje a w pliku
sprzedaz.mdb wpisana jest do niego ścieżka.)
Załączam skrypt otwierający bazę sprzedaz.mdb:
Dim con
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=sprzedaz.mdb;" & _
"User ID=SmartAdmin;Password=SmartSprzedaz;"
con.Close
Dziękuję za pomoc.
(MP)
Użytkownik "Piotr M." napisał
Co jest tego przyczyną i co z tym zrobić? (Plik sprzedaz.mdw istnieje a w
pliku
sprzedaz.mdb wpisana jest do niego ścieżka.)
Załączam skrypt otwierający bazę sprzedaz.mdb:
Dim con
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=sprzedaz.mdb;" & _
"User ID=SmartAdmin;Password=SmartSprzedaz;"
con.Close
Sciezka do .mdw nie jest zapisywana w .mdb.
Sciezke do .mdw trzeba podac przy uruchamianiu (odwolywaniu sie do) .mdb o
ile jest ono inne niz system.mdw
Dim con
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=sprzedaz.mdb;" & _
"Jet OLEDB:System database = sprzedaz.mdw;" & _
"User ID=SmartAdmin;Password=SmartSprzedaz;"
con.Close
<%
set cnn1 = server.createobject("ADODB.Connection")
cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:AccessLudzie.mdb;"
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "select * from tblLudzie", cnn1
%
<html
<head<titleLista ludzi z bazy c:Accessludzie.mdb</title</head
<body
<%
do while not rs.eof
%
Nazwisko: <% rs.Fields("Nazwisko") %
<%
rs.MoveNext
Loop
%
</body</html
<
Internet Explorer 5.0 wczytuje mi to ('test.asp'), ale niestety polaczenie
zawodzi, bo nic mi sie nie wyswietla?
Gdzie robie blad?
Probowalem tez zainstalowac odpowiednik PWS pod Windows2000, ale niestety to
nic nie dalo?
Bazami danych zajmuje sie od dawna, ale technologii internetowych dopiero
sie ucze.
Prosze o pomoc.
Pozdrawiam Wszystkich.
Artur
Ze stron MS, np:
http://www.microsoft.com/downloads/results.aspx?productID=&freetext=j...
layLang=en
GD
heise-ticker dzisiaj poinformowal o dziurze w Jet'cie,
ktora pozwala na spreparowanie pliku mdb, ze przy starcie
uruchamia dowolny program. Wiecej na:
http://www.hexview.com/docs/20050331-1.txt
Exploit jest tu:
http://www.computerterrorism.com/msjet.htm
Ciao, Smyk
Przeczytaj wszystkie posty z tego wątkuW pliku z danymi tworzę z pomocą VBA tebele tymczasowe, które nie są
tabelami łączy.
Są widoczne tylko w pliku z danymi.
Mogę je tworzyć łącząc się za pomocą konstrukcji:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.ConnectionString = "data source=C:aza_dane.mdb"
conn.Open
strSQL = "tutaj jakiś SQL"
conn.Execute strSQL
conn.Close
Problem w tym jak taką tabelę podejrzeć z możliwością edycji jak to ma
miejsce w wypadku konstrukcji:
DoCmd.OpenTable nazwa, acViewNormal, acEdit
Czy da się tą instrukcję jakoś tak przerobić by można otworzyć w ten sposób
tabelę z innego pliku mdb ?
Mam bazę podzieloną na dwa pliki : z danymi i bazą - tabele są tabelami
łączy.
W pliku z danymi tworzę z pomocą VBA tebele tymczasowe, które nie są
tabelami łączy.
Są widoczne tylko w pliku z danymi.
Mogę je tworzyć łącząc się za pomocą konstrukcji:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.ConnectionString = "data source=C:aza_dane.mdb"
conn.Open
strSQL = "tutaj jakiś SQL"
conn.Execute strSQL
conn.Close
Osobiscie polecalbym tworzyc tabele tymczasowe w pliku frontonu
wzglednie w osobnym, lokalnym pliku mdb. Bedziesz mial mniejsze
problemy ze wspobieznoscia takiego rozwiazania.
Problem w tym jak taką tabelę podejrzeć z możliwością edycji jak to ma
miejsce w wypadku konstrukcji:
DoCmd.OpenTable nazwa, acViewNormal, acEdit
Czy da się tą instrukcję jakoś tak przerobić by można otworzyć w ten sposób
tabelę z innego pliku mdb ?
Sprobowalbym dwoch rzeczy: Podlinkowanie tabel tymczasowych
do pliku frontonu. Wtedy nie ma problemu. DoCmd.OpenTable
widzi taka tabele jakgdyby byla lokalna. Inna mozliwosc
(od Acc2k) to utworzenie rekordsetu i przypisanie go do
formularza otwieranego w trybie datasheet - F1(Form.Recordset)
Ciao, Smyk
Przeczytaj wszystkie posty z tego wątkuMam taki maly interes:_)) Wiem ze to nie Wasza wina:-)
Kiedys robilem cos takiego, ale minely juz ze 3 lata a pamiec nie ta:-((
Jest sobie komputer z W2K, na nim zainstalowany Access 97, IIS, dziala
poprawnie ODBC. Udostepniam baze jako Systemowe DSN, podaje do niej sciezke,
wpisuje nazwe - np. z31.
Teraz w Accesie exportuje sobie tabele do formatu HTX/IDC i otrzymuje dwa
pliki IDC z zapytaniem i HTX z szablonem.
Zrobilem prosta stronke o nazwie test.html - z niej jest wywolanie idc,
ktory pakuje do katalogu Scripts na IIS. Teoretycznie po wywolaniu idc
powinno zadzialac - a nie chce - otrzymuje komunikat:
Błąd wykonywania kwerendy
a.. [State=S1000][Error=-1032][Microsoft][Sterownik ODBC Microsoft
Access ] Aparat bazy danych Microsoft Jet nie może otworzyć pliku
'(nieznane)'. Plik jest już otwarty do wyłącznego użytku przez innego
użytkownika lub potrzebne jest zezwolenie na oglądanie jego danych.
b.. [State=S1000][Error=-1032][Microsoft][Sterownik ODBC Microsoft
Access ] Aparat bazy danych Microsoft Jet nie może otworzyć pliku
'(nieznane)'. Plik jest już otwarty do wyłącznego użytku przez innego
użytkownika lub potrzebne jest zezwolenie na oglądanie jego danych.
Czy ktos juz wie o co chodzi??? Moge poprosic o pomoc? Schrzanilem cos w
konfiguracji serwera, czu ODBC, czy moze cos zle robie???
Pozdrawiam
Piotr Biegała
Błąd wykonywania kwerendy
a.. [State=S1000][Error=-1032][Microsoft][Sterownik ODBC Microsoft
Access ] Aparat bazy danych Microsoft Jet nie może otworzyć pliku
'(nieznane)'. Plik jest już otwarty do wyłącznego użytku przez innego
użytkownika lub potrzebne jest zezwolenie na oglądanie jego danych.
b.. [State=S1000][Error=-1032][Microsoft][Sterownik ODBC Microsoft
Access ] Aparat bazy danych Microsoft Jet nie może otworzyć pliku
'(nieznane)'. Plik jest już otwarty do wyłącznego użytku przez innego
użytkownika lub potrzebne jest zezwolenie na oglądanie jego danych.
Czy ktos juz wie o co chodzi??? Moge poprosic o pomoc? Schrzanilem cos w
konfiguracji serwera, czu ODBC, czy moze cos zle robie???
Po blizszym badaniu - oto plik IDC:
Datasource:z31
Template:tel.htx
SQLStatement:SELECT * FROM [tel]
Bez wzgledu na to co wpisze po Datasource - komunikat jest ten sam. Baza nie
jest otwarta przez zaden inny program. Ja juz zglupialem:-((
Leszek Dziubinski wrote:
W poważnych systemach bazodanowych jest możliwość śledzenia planu
wykonania zapytania, co zrobić z Accessem?
Pod spodem cytat z "Microsoft Jet 3.5 Performance Overview
and Optimization Techniques" (jest gdzieś na stronie Microsoftu)
(J)
-----------------------------------------------------------------------
The ShowPlan function was available in Jet 3.0 by adding the following
key to the registry:
\HKEY_LOCAL_MACHINESOFTWAREMICROSOFTJET3.0EnginesDebug
Under this key, add a string data type called JETSHOWPLAN (make sure to
use all capital letters). To turn on ShowPlan, set the value to ON.
To turn it off, set the value to OFF.
When ShowPlan is turned on, Jet appends text to a file called
SHOWPLAN.OUT every time a query is compiled. You must modify or compact
the database in order to have a stored query show its query plan.
It is also important to note that SHOWPLAN.OUT appends new data for
every new query plan.
[...]
To activate ShowPlan for Jet 3.5 you must use this key location:
\HKEY_LOCAL_MACHINESOFTWAREMICROSOFTJET3.5EnginesDebug
Uwaga
Obszary robocze ODBCDirect ukazały sie dopiero wraz z Accessem 97.
Lecho
Mihau Mrus <mih@poczta.onet.plwrote in message
Witam
Mam taki problem:
jest tabela w bazie na MySQL i chcialbym zrobic polaczenie do niej
bezposrednio z accessa. Wiem, ze mozna stworzyc tabele polaczana w bazie
accessa. Mnie chodzi o to, zeba pewne dane byly zapisywane do tabeli w
MySQL
bez laczenia jej - zeby nie byla widoczna w bazie.
Probowale czegos takiego:
...
Set moja_zmienna = OpenDatabase("", , ,
"ODBC,DATABASE=nazwa_bazy,UID=user,PWD=haslo,DSN=MySQL")
...
Po wprowadzeniu danych, za kazdym razem access pyta sie o zrodlo danych.
Co
trzeba zrobic, zeby to bylo wykonywane automatycznie. Mam zainstalowane
sterowniki ODBC - tabele polaczone 'klasycznie' dzialaja.
Z gory dzieki
Mihau Mrus
Aparat baz danych Microsoft Jet zatrzyma? proces, poniewaz. inny
uz.ytkownik próbuje jednoczes'nie zmienic' te same dane. (B?a;d 3197)
Problem powstaje na kazdej maszynie i niezaleznie czy to ACCESS
2000,XP,2003.
Niemoz.na go naprawic w access, bynajmniej mi sie nie uda?o, wiec moz.e
zna ktos jakies narze;dzie do naprawy baz w accessie lub sposób na ta;
z?os'liwos'c'.
olek
-------
Aparat baz danych Microsoft Jet zatrzyma? proces, poniewaz. inny
uz.ytkownik próbuje jednoczes'nie zmienic' te same dane. (B?a;d 3197)
Problem powstaje na kazdej maszynie i niezaleznie czy to ACCESS
2000,XP,2003.
Niemoz.na go naprawic w access, bynajmniej mi sie nie uda?o, wiec moz.e
zna ktos jakies narze;dzie do naprawy baz w accessie lub sposób na ta;
z?os'liwos'c'.
olek
-------
runtime error 3078
aparat bazy danych Microsoft Jet nie może znaleźć tabeli wejściowej lub
kewrendy sprawdźczy ona istnieje oraz czy nazwa jest poprawnie wpisana
1. istnieje
2. jest poprawnie wpisana
wariant z :
runtime error 13
type mismatch
pozdrawiam
adam
Dim rs_acc As ADODB.Recordset, cn_acc As ADODB.Connection
Set cn_acc = New ADODB.Connection
cn_acc.Provider = "Microsoft.Jet.OLEDB.4.0"
cn_acc.Open "Tu nazwa pliku mdb..."
Set rs_acc = cn_acc.Execute("SELECT * FROM TABELA_ACCESSOWA ...")
... i teraz chciałbym wstawić dane z tego rekordsetu do tabeli na
sqlserverze, która istnieje w aktualnie otwartym projekcie i ma identyczne
pola (kolejność, typy danych, indeksy...), i nie bardzo umiem :/
Ja wiem, że to jest jakoś prosto i łatwo, ale kur(*()^%* nie mogę tego
wykoncypić... Czy trzeba utworzyć drugiego rekordseta na tabeli docelowej i
jakoś przekopiować, czy co...
Dim rs_acc As ADODB.Recordset, cn_acc As ADODB.Connection
Set cn_acc = New ADODB.Connection
cn_acc.Provider = "Microsoft.Jet.OLEDB.4.0"
cn_acc.Open "Tu nazwa pliku mdb..."
Set rs_acc = cn_acc.Execute("SELECT * FROM TABELA_ACCESSOWA ...")
Jeśli to ma polegać na kopiowaniu całych tabel, to dlaczego nie użyjesz
DTSów?
Pozdrawiam
Grzegorz
Niby prościutka sprawa. Guglam, guglam i nic... Albo mnie zaćmiło, albo
to
nie jest tak całkiem oczywiste.
ADP, Access XP.
Mam zadeklarowanego adodb.rekordseta, otwieram go na tabeli bazy
Accessowej,
o tak:
Dim rs_acc As ADODB.Recordset, cn_acc As ADODB.Connection
Set cn_acc = New ADODB.Connection
cn_acc.Provider = "Microsoft.Jet.OLEDB.4.0"
cn_acc.Open "Tu nazwa pliku mdb..."
Set rs_acc = cn_acc.Execute("SELECT * FROM TABELA_ACCESSOWA ...")
Jeśli to ma polegać na kopiowaniu całych tabel, to dlaczego nie użyjesz
DTSów?
A dlaczego DTS tylko dla calych tabel?
;-)
|
| Filip Stankowski wrote:
| zainstalowałem również tą wersję i efekt dokładnie taki sam ... od
biedy
| mogę założyć, że przy dużym stopniu fragmentacji ten jetcomp.exe
| zadziała
| jednak lepiej (znaczy pomniejszy rozmiar pliku zamiast go powiększać)
Najnowsza wersja pod poniższym:
Jak za pomocą ADO zdefragmentować bazę danych MS Access
Za pomocą:
Microsoft Jet and Replication Objects 2.6 Library
klasa: JRO.JetEngine
metoda: CompactDatabase
Parametry: ConnectionsString źródła i przeznaczenia
Ostrzeżenie - baza (dowolna) zostanie przekonwertowana do formatu Jet
4.0.
Niekoniecznie.
Można podać w wyjściowym ConnectionStringu parametr:
"Jet OLEDB:Engine Type=<tu numer od 1 do 5"
gdzie:
1 - JET10
2 - JET11
3 - JET2X
4 - JET3X
5 - JET4X
W ten sposób można określić rodzaj docelowej bazy.
Nie sprawdzałem tylko co będzie gdy w systemie zabraknie
strowników do odpowiednich Jetów.
Użytkownik"Krzysztof Naworyta" <k.nawor@anty.datacomp.spam.com.pl
napisał
Tych zapasowych juzerów powinieneś wprowadzić sam, na
początku, podczas tworzenia definicji grup !
czesc
Dzieki
Doszedlem do takiego samego wniosku i zrobilem se Pomocnika na sztywno.
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPom & " ;jet oledb:system database=" & _
"C:WindowsPulpitBAZANowaabezpieczony.mdw; " & _
"user id=pomocnik;Password =xksevxxxg"
Przetrenowalem chociaz tworzenie i dolaczanie(kodem) userow do grup.To Moje
Poz
Jerzy B
Taki jest obecnie DSN systemowy, z którego korzysta strona ASP
No wlasnie tu chcialem sie upewnic, ze po przeniesieniu
pliku *.mdb na wolumen novell'a dopasowales sciezke w
administratorze zrodel odbc.
[2]
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<databaseName;
User ID=<userName;Password=<userPassword;"
Taki jest obecnie DSN, z którego korzysta SQL Server, "zasysając" dane z
pliku mdb do tabeli na serwerze.
...
Hm, póki co cegiełki nosimy ręcznie, ale ostatnio szef stwierdził, że przy
takiej ilości cegiełek ciężarówka będzie niezbędna - to jest wstępna
przymiarka (trening? zapoznanie?) do łączenia się z sql-serverem, co czeka
mnie prędzej czy później i raczej prędzej niż później :)
Ale na przyszlosc zrezygnuj(esz) z takiej konstelacji ;-?
dziala, jak uzyjesz tego bezposrednio z kodu/modulu w Access'ie ?
O, nie próbowałem :)
Naturalnie w przypadku, gdy MDB lezy na vol novell'a.
Ciao, Rafal
Mam baze danych stworzona w MS Access 2003 ktora dziala poprawnie w Windowsie
2000. Ta baza danych zwraca mi nastepujacy blad w Windowsie XP (tez ACC2003):
"The expression On Load you entered as the event property setting
produced the following error: A problem occured while Microsoft Access
was communicating with the Ole server or ActiveX Control"
Otrzymuje rowniez podobne bledy w zdarzeniu OnLoad, OnClick itd. z tym samym
komunikatem:
"The expression...Ole server or ActiveX control"
Mam zainstalowana najnowsza wersje Microsoft Jet 8.0 SP na WinXP.
Mam wszystkie odwolania aktywne w oknie referencji VB. Nie ma zadnych
brakujacych odwolan w kodzie formularza ktorego otwiera zarowno w WinXP i
Win2000.
Kiedy kompiluje kod vb nie wyswietla mi zadnego bledy czyli wszystko jest ok z
kodem.
Czy macie jakis pomysl dlaczego ten formularz na jednym komputerze dziala bez
zastrzezen a na drugim zwraca co chwila bledy o ktorych pisze?
Dziekuje z gory za pomoc
M.
Witam wszystkich!
Mam baze danych stworzona w MS Access 2003 ktora dziala poprawnie w Windowsie
2000. Ta baza danych zwraca mi nastepujacy blad w Windowsie XP (tez ACC2003):
"The expression On Load you entered as the event property setting
produced the following error: A problem occured while Microsoft Access
was communicating with the Ole server or ActiveX Control"
Otrzymuje rowniez podobne bledy w zdarzeniu OnLoad, OnClick itd. z tym samym
komunikatem:
"The expression...Ole server or ActiveX control"
Mam zainstalowana najnowsza wersje Microsoft Jet 8.0 SP na WinXP.
Mam wszystkie odwolania aktywne w oknie referencji VB. Nie ma zadnych
brakujacych odwolan w kodzie formularza ktorego otwiera zarowno w WinXP i
Win2000.
Kiedy kompiluje kod vb nie wyswietla mi zadnego bledy czyli wszystko jest ok z
kodem.
Czyżby???
To wcale nie oznacza, że masz poprawny kod. Ot weźmy taki przykład:
Dim obj As Object
Set obj = New Excel.Application
Debug.Print dbj.pupa
Debbuger przełknie, w trakcie nie pójdzie. Dlaczego? Np. dlatego, że
nie ma Excela, albo excel jest, ale nie ma właściwości pupa.
Opis błędu sugeruje co może być nie tak: np. kontrolka ActiveX.
Jeśli powiesz jeszcze w jakiej linijce wywala błąd oraz jakie nietypowe
kontrolki masz na formularzu, podpowiemy co powoduje błąd.
Blazek
Moje pytanie wiąże się z tym iż w pewnym biurze rachunkowym jest serwer
plików oparty na linuxie ( serwer Samba) gdzie bez problemu pracowała
poprzednia wersja Płatnika , jak również oprogramowanie księgowe, i nie
wiem
czy będzie mozliwość na tych samych warunkach ????
generalnie nie powinno być problemów ale nie sprawdzałem tego.
krh
"When record-level locking is on, data edited through Access forms and
datasheets will use record-level locking. Also, Recordset objects opened by
using the DAO OpenRecordset method, and any ADO methods (when you use the
Microsoft Jet 4.0 OLE DB provider) that open or return a Recordset object
will use record-level locking. However, any SQL Data Manipulation Language
(DML) queries - that is, queries that add, delete, or modify records - that
are run from ADO (when you use the Microsoft Jet 4.0 OLE DB Provider), DAO,
or the Access query user interface will use page-level locking. Page-level
locking is used for SQL DML statements to improve performance when you are
working with many records. However, even when record-level locking is turned
on, it is not used for updates to values in memo fields and values in fields
that are indexed - they still require page-level locking. "
shira
Zrobilam wszystko zgodnie z tym co mi podales. Plik jest widoczny w
wincmd. Zrobilam makro ale przy jego uruchamianiu pokazuje sie za kazdym
razem: Aparat bazy danych Microsoft Jet nie może otworzyć pliku. Plik
jest już otwarty do wyłącznego użytku przez innego użytkownika lub
potrzebne jest zezwolenie na oglądanie jego danych. (Błąd 3051).
Myslalam, ze to kwestia systemu bo w pracy mam NT, ale w domu dokladnie to
samo sie dzieje. Zdjelam w tym pliku wszystkie atrybuty, ale niestety
dzieje sie to samo bez wzgledu jakie ma atrybuty nadane. Co robie zle ze
sie tak dzieje?
Nie mogę Ci pomóc na odległość.
Byś może ten plik nie da się zaimportować ze względu na błąd formatu
(jak sugerował Jacek Kubek)
Skoro masz już WinCmd spróbuj przy jego pomocy podzielić plik na mniejsze
kawałki (choćby 1MB)
Następnie otwórz czymś pierwszy - popraw ostatnią linię (pewnie będzie
urwana w połowie)
i spróbuj go zaimportować.
Jak długo wielkość pliku przeszkadza w jakiejkolwiek diagnozie - daleko nie
zajdziemy ...
Próbuję coś napisać korzystając z ADO.NET (VS 2005 C++) i muszę sprawdzić w
mojej utworzonej przez program bazie istnieje tabela o jakiejś tam nazwie.
No to nie można było od razu pisać że chodzi o .NET? Chyba ntg (to jest
grupa Accesowo - VBA-owa), ale jakbyś spróbował analogicznie do tego:
Dim cn As New Data.OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<tu
ścieżka do mdb;Persist Security Info=True"
Dim cmd As New Data.OleDb.OleDbCommand("select * from <tu nazwa tabeli",
cn)
cmd.Connection.Open()
Try
cmd.ExecuteReader()
MsgBox("jest!")
Catch ex As Exception
MsgBox("dupa :(")
End Try
cmd.Connection.Close()
to może by Ci coś z tego wyszło...
Może to nie jest najpiękniejszy kawałek kodu w .net, ale ja w tym nie
siedzę wcale a wcale - ile umiałem tyle pomogłem :)
Dnia Wed, 25 Jan 2006 23:31:56 +0100, Kris napisał(a):
| Próbuję coś napisać korzystając z ADO.NET (VS 2005 C++) i muszę sprawdzić
| w
| mojej utworzonej przez program bazie istnieje tabela o jakiejś tam
| nazwie.
No to nie można było od razu pisać że chodzi o .NET? Chyba ntg (to jest
grupa Accesowo - VBA-owa), ale jakbyś spróbował analogicznie do tego:
Dim cn As New Data.OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<tu
ścieżka do mdb;Persist Security Info=True"
Dim cmd As New Data.OleDb.OleDbCommand("select * from <tu nazwa tabeli",
cn)
cmd.Connection.Open()
Try
cmd.ExecuteReader()
MsgBox("jest!")
Catch ex As Exception
MsgBox("dupa :(")
End Try
cmd.Connection.Close()
to może by Ci coś z tego wyszło...
Może to nie jest najpiękniejszy kawałek kodu w .net, ale ja w tym nie
siedzę wcale a wcale - ile umiałem tyle pomogłem :)
--
PL
.NET to nie tylko VB !!!!
To tez np. C++, Java, C# ... jakbym chcial zapytac o .NET to nie pytalbym
tutaj (mam nadzieje ze rozumiesz to :-)) zapytalem wyraznie o SQL na
grupie access !!!!!!!!!! i zapewniem Cie ze wim co robie !!!! nie odzywaj
sie !!!! prosilem cie juz o to !!!! ale dzięki momo wszysto za proby
pokonania kompleksów jak napisal Przemak
(...)
| String^ mySelectQuery = "SELECT 'name' FROM sysobjects WHERE type = 'U'
| AND name = 'Customers'";
Komunikaty są czytelne, ale najwyraźniej nie umiesz czytać ze zrozumieniem
...
| otrzymuje błąd:
|
| "Aparat bazy danych Microsoft Jet nie może znaleźć tabeli wejściowej lub
| kwerendy 'sysobjects'. Sprawdź, czy ona istnieje oraz czy nazwa jest
| poprawnie napisana."
Nie ma w mdb tabeli "sysobjects" !
Pole "type" nie jest polem tekstowym
"Select 'Name' From... " zwróci string 'Name' - co warto wiedzieć, choć tu
nie ma większego znaczenia ...
Prawidłowy sql przewijał się w tym wątku kilkakrotnie:
"Select id From msysobjects Where type=1 and name ='Customers'" - tabele
lokalne
"Select id From msysobjects Where type=6 and name ='Customers'" - tabele
połączone
czy na liście pól będzie "id" czy "name" czy "1" czy "'AlaMaKota'" - nie
ma większego znaczenia, bo testujesz czy jest rekord czy go nie ma.
Chyba, że użyjesz funkcji agregującej:
"Select Count(*) From ..."
Wtedy wiersz otrzymasz zawsze - i będziesz musiał sprawdzić co zostało
zwrócone.
[...]
Innym rozwiązaniem jest nowy formularz z opisem a potem odświeżenie
html'a.
Ale wtedy powstaje problem jak do Access'a przekazać, która miniaturka
została kliknięta?
{tu poprzednie wyciąłem bo chyba niedobre w tym kontekście}
Macie jakieś pomysły?
Tak nieśmiało zaproponuję, (z całym bagażem ograniczeń):
[...]
<SCRIPT LANGUAGE=VBScript
dim oRs, SQL, dsn
Private Sub Zapisz()
set oRs = CreateObject("ADODB.Recordset")
dsn="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:Proba.mdb"
SQL="SELECT Tabela1.a FROM Tabela1;"
oRS.Open SQL, dsn, 2, 3
oRS.Fields("a")="ble ble ble"
oRs.Update
MsgBox oRS.Fields("a")
oRs.close
set oRs=Nothing
End Sub
</SCRIPT
Polskie ogonki w stringu " ble ble ą ble"
cosik powodują, że rekord się nie aktualizuje.
testowane tylko z Notatnika (przed i po konwersji na iso-8859-2).
Tak mi się tylko nasunęło.
prosze o pomoc .. siedze trzeci dzien ... i juz niewiem co robic
rafal
Dim DB As DAO.Database, RS As DAO.Recordset
Dim strSQL As String
Set DB = CurrentDb
strSQL = "Select Field1 FROM Table1;"
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset)
Debug.Print RS.RecordCount
No i pokazuje mi, że jest tylko jeden rekord! Ten sam string SQL w
kwerendzie listuje wszystkie rekordy. O co chodzi?
I jeszcze druga sprawa - usiłuję zaktualizować przynajmniej ten jeden
rekord (tak sobie, dla sprawdzenia choćby poprawności syntaksu) i
wyskakuje mi msg, że "aparat bazy danych microsoft jet zatrzymał
proces, ponieważ inny użytkownik próbuje jednocześnie zmienić te same
dane". A robię to tak:
With RS
For i = 1 To RS.RecordCount 'czyli jeden z jakiegoś powodu
.Edit
!LP = i
.Update 'o! i tu się wykrzacza
.MoveNext
Next
End With
Zlituje się ktoś, pięknie proszę?
Dzięki serdeczne,
Zawias
mam 2 kwerendy krzyzowe kw1 i kw2, ktore wykorzystuje w kolejnej
kwerendzie (kw3). Kw3 jest kwerenda typ: SELECT * from kw1 UNION ALL
SELECT * from kw2 WHERE imie='Forms!frmDane!komImie; - niestety jest
blad podczas wywolaniu kwerendy: "Aparat bazy danych Microsoft Jet nie
moze rozpoznac 'Forms!frmDane!komImie' jako poprawnej nazwy pola lub
jako wyrazenia." W jaki spsob moge ominac ten blad?
Czy jedynym mozliwym sposobem jest zrezygnowanie z kwerend krzyzowych
(zamiana ich na kwerendy wybierajace) lub tworzenie z kwerend
krzyzowych tabelek i wykorzykostanie stworzonych tabel w kwerendzie
kw3?
Z gory dzieki za odpowiedz.
Pozdrawiam
Piotr.
Nalezy zastapic bezposrednie odwolanie do pola, nastepujaca funkcja:
Public Function FPole1()
FPole1= Forms!MojForm!Pole1
End Function
K.P.
| mam 2 kwerendy krzyzowe kw1 i kw2, ktore wykorzystuje w kolejnej
| kwerendzie (kw3). Kw3 jest kwerenda typ: SELECT * from kw1 UNION ALL
| SELECT * from kw2 WHERE imie='Forms!frmDane!komImie; - niestety jest
| blad podczas wywolaniu kwerendy: "Aparat bazy danych Microsoft Jet nie
| moze rozpoznac 'Forms!frmDane!komImie' jako poprawnej nazwy pola lub
| jako wyrazenia." W jaki spsob moge ominac ten blad?
Stary problem ...
Gdy kwerendy krzyżowe nie mają jawnie określonych kolumn, to pojawia się
ta sytuacja.
Wystarczy jawnie zdefiniować parametr:
PARAMETERS Forms!frmDane!komImie Text;
TRANSFORM ...
SELECT ...
FROM ...
WHERE
JakiesPole = Forms!frmDane!komImie
GROUP BY ...
PIVOT ...
Być może zdefiniuj parametr także w kwerendzie UNION, mimo że w niej
samej jawnie to odwołanie nie występuje.
Równie dobrze, możesz też wymusić na Jet'cie wstępne wyliczenie
parametru:
TRANSFORM ...
SELECT ...
FROM ...
WHERE
JakiesPole = Eval("Forms!frmDane!komImie")
GROUP BY ...
PIVOT ...
Gdzies na stronie MS czytalam, zeby tak projektowac baze, aby cyt.
"kazdy klient uzywal jednego i tylko jednego polaczenia z baza danych
aparatu Microsoft Jet", tylko nie bardzo wiem, jak to przelozyc na
praktyke :) i czy to oznacza ze w moim przypadku klient uzywa 2
polaczen?
Baza kilka razy sie "wywalala", wiec szukam powodow.
Bede wdzieczna za zainteresowanie moim pytaniem i jednoczesnie
dziekuje za dotychczasowa pomoc
Pomóżcie bo zwariuję!
Mam formularz gł. z podformularzem ciągłym (rekordy jeden pod drugim).
Wchodząc do podformularza wypełniam 3 pola (2 listy wyboru oraz pole
tak/nie).
Aby fokus nie wchodził mi do nowej linii dodałem do pola tak/nie procedurę
przy utracie fokusu:
1. przejście do pierwszego pola w podformularzu (musiałem to zrobić ponieważ
kursor i tak przechodził do nowego rekordu);
2. wyjście z podformulazra i ustawienie fokusu w następnym polu w formularzu
głównym.
I teraz najlepsze:
pokazują mi się na przemian natępujące komunikaty uniemożliwiające dalszą
pracę:
1. "Aparat bazy danych Microsoft Jet zatrzymał proces ponieważ inny
użytkownik próbuje jednocześnie zmienić te same dane. (Baza nie działa w
sieci i pracuję na niej tylko ja)
2. "Nieprawidłowa zakładka"
Bardzo proszę o pomoc!!!!
Pozdrawiam
Tomasz K.
PS.: I sorry za te wykresy ale nie mam na nie wpływu
1. "Aparat bazy danych Microsoft Jet zatrzymał proces ponieważ inny
użytkownik próbuje jednocze nie zmienić te same dane. (Baza nie działa w
sieci i pracuję na niej tylko ja)
2. "Nieprawidłowa zakładka"
Moze latwiej Ci bedzie wykryc przyczyne bledu, jesli wyjasnimy co te
komunikaty oznaczaja:
1. Ty nie chodzi (nie musi chodzic) o innego uzytkownika. Po prostu Twoj
program rozpoczal edycje rekordu i jednoczesnie w innym miejscu na innym
formularzu, podformularzu, w innej procedurze (itd) probuje edytowac te same
dane.
2. Zmienilo sie zrodlo rekordow, a Ty (Twoj program w jakiejs operacji)
odwolujesz sie jeszcze do starego.
K.P.
Baza mdb w access 2000 pracuje w sieci, baza pracowała poprawnie przez
wiele
miesięcy. Nagle po uruchomieniu pojawił się komunikat : "Aparat bazy
danych Microsoft Jet nie może znaleźć obiektu "MSysDb". Upewnij się że
obiekt istnieje, a jego nazwa i ściezki podane są prawidłowo. "
Bazy nie mozna wogóle otworzyć, ani też zaimportować formularzy, kwerend
itp.
Co to jest za błąd, jak sobie poradzić, co może być przyczyną takiego
błędu.
Co mozna zrobić z taką bazą poza odzyskiem z kopi zapasowej, co zostało
zrobione.
Nie chce się szukać samemu, co? :)
http://www.google.pl/search?hl=pl&q=Microsoft+Jet+cannot+find+MSysDb&...
ukaj+w+Google&lr=
1)łączę się z plikiem xls
Set con = New ADODB.Connection
With con
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source= c: est5.xls';Excel 8.0;IMEX=1"
.CursorLocation = adUseClient
.open
End With
Set rst = con.Execute("SELECT * FROM [all$]")
2) tutaj sprawdzam format pliku - do tego miejsca działa ok
3) zamykam połączenie - con.close
4) próbuję przenieść dane z accessa co mojej bazy:
strSQL = "SELECT * INTO poprzedni_test FROM " & _
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
"'Excel 8.0;Database=c: est5.xls', " & _
"'SELECT * FROM [All$]')"
CurrentProject.Connection.Execute strSQL
tutaj wywala mi komunikat, że ODBC nie może zlokalizować obiektu 'All$'
nie wiem co jest nie tak - wcześniejsze połączenie nie miało problemu z
arkuszem 'All'
czy coś nie tak w składni, a może da się to zrobić w inny sposób?
Mozna chyba jakosc przez ADO czy cos podobnego ...
Po dodaniu do referencji "MIcrosoft Jet and Replication
Objets x.y Library" mozna uzyc JRO.JetEngine.CompactDatabase
Ciao, Smyk
Przeczytaj wszystkie posty z tego wątku
Co robię źle?
Nieśmiało pragnę zauważyć, że pobrane dane z tabeli przydałoby się jakoś
wyświetlić :)
<html
<head
<!-- #include file="adovbs.inc" --
<titleNazwisko i imie</title
<meta http-equiv="Content-Type"content="text/html;charset=Windows-1250"
</head
<body
<%
sql = "SELECT * FROM pracownicy ORDER BY nazwisko,imie;"
Set cn = Server.Createobject("ADODB.Connection")
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Open Server.MapPath("prac.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, cn, adOpenForwardOnly, adLockReadOnly
If rs.EOF Then
Response.Write "<P<CENTERBrak rekordów w bazie</center</p"
Else
Do While Not rs.EOF
Response.write rs("nazwisko")&" "&rs("imie")&"<br"
rs.movenext
Loop
end if
rs.close
cn.close
%
</body
</html
Mam tabele, powiedzmy spis CD. Jedno pole z tej tabeli jest polaczone
poprzez Kreator odnosnikow z tabela druga. W drugiej tabeli mam dwa
pola: ID_typu (autonumer) oraz Rodzaj_Muzyki, polaczenie jest przez
pole ID_typu i to pole jest przechowywane w tabeli CD.
Tworze kreatorem formularz tabeli CD no i moge wpisywac dane...
Pojawilo sie pole kombi, w ktorym - jak rozwine liste - pojawiaja sie
rodzaje muzyki z tej drugiej tabeli. Niby wszystko ok, tylko ze jezeli
nie zaznacze zadnego rodzaju muzyki w nowym rekordzie i probuje go
zapisac albo zamknac formularz pojawia sie komunikat:
"Aparat bazy danych Microsoft Jet nie moze znalezc rekordu w tabeli
'rodzaj_muzyki' o kluczu pasujacym do pola (pol) 'ID_typu"
Rozumiem ten komunikat - nie moze znalezc, bo nie ma takiego rekordu z
wartoscia ID null... Ale po co szuka?!! Mialem wpisana wartosc
domyslna dla tego pola 0, ale ja skasowalem i zostawilem pusta wartosc
domyslna.. Oczywiscie pole mam zaznaczone jako nie wymagane.
Byc moze cos nie tak z relacjami?? Prosze o pomoc mozliwie szybko,
siedze nad tym juz sporo czasu a musze niedlugo skonczyc te baze :/
Dzieki, pozdrawiam, Marcin.
Dim User As String
User = CurrentUser()
If IsNull(DLookup("[Bledy - pelna lista]![Suma]", "[Bledy - pelna
lista]", "[Bledy - pelna lista]![BaseLogin]=" & User)) Then
Me.Bledy.Value = "Brak"
Else
Me.Bledy.Value = DLookup("[Bledy - pelna lista]![Suma]", "[Bledy - pelna
lista]", "[Bledy - pelna lista]![BaseLogin]=" & User)
End If
wywala blad:
Run-time error '3070'
Aparat bazy danych Microsoft Jet nie moze rozpoznac 'kgolebiewski' jako
poprawnej nazwy pola lub jako wyrazenia.
pozdrawiam
Krzysztof Gołębiewski
Dim User As String
User = CurrentUser()
If IsNull(DLookup("[Bledy - pelna lista]![Suma]", "[Bledy - pelna
lista]", "[Bledy - pelna lista]![BaseLogin]=" & User)) Then
(...)
Run-time error '3070'
Aparat bazy danych Microsoft Jet nie moze rozpoznac 'kgolebiewski' jako
poprawnej nazwy pola lub jako wyrazenia.
pozdrawiam
Krzysztof Gołębiewski
Sprawdź w archiwum:
wiadomość: "Odp: maly problem", autor: Krzysztof Gołębiowski, dnia:
29-07-02, godz: 14:40
KN
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=G:zestawaza.mdb; " & _
"User ID=xxx, Password=yyy"
cnn.Open
Niestety przy próbie otwarcia innej bazy pojawia się komunikat
"Niewłaściwa nazwa konta lub niewłaściwe hasło". Użytkownik i hasło
są poprawne. Czy ktoś spotkał się z podobnym problemem ?
Co powinienem zmienić.
Sławek
-----Oryginalna wiadomość-----
Od: "SławomirPrzybył" [mailto:sprzy@poczta.onet.pl]
Wysłano: 2002-03-05 13:04
Do: pl-comp-bazy-danych-msacc@newsgate.pl
Temat: Problem z Connection.
Proszę o pomoc.
Mam kod jak poniżej w Access 2000.
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=G:zestawaza.mdb; " & _
"User ID=xxx, Password=yyy"
cnn.Open
Niestety przy próbie otwarcia innej bazy pojawia się komunikat
"Niewłaściwa nazwa konta lub niewłaściwe hasło".
Użytkownik i hasło
są poprawne. Czy ktoś spotkał się z podobnym problemem ?
Co powinienem zmienić.
Może dodaj ścieżkę do pliku mdw?
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=G:zestawaza.mdb; " & _
"Jet.OlEDB:System Database=C:System.mdw;", &
"User ID=xxx, Password=yyy"
Pozdrawiam
Grzegorz
| -----Oryginalna wiadomość-----
| Od: "SławomirPrzybył" [mailto:sprzy@poczta.onet.pl]
| Wysłano: 2002-03-05 13:04
| Do: pl-comp-bazy-danych-msacc@newsgate.pl
| Temat: Problem z Connection.
| Proszę o pomoc.
| Mam kod jak poniżej w Access 2000.
| Dim cnn As ADODB.Connection
| Set cnn = New ADODB.Connection
| cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
| "Data Source=G:zestawaza.mdb; " & _
| "User ID=xxx, Password=yyy"
| cnn.Open
| Niestety przy próbie otwarcia innej bazy pojawia się komunikat
| "Niewłaściwa nazwa konta lub niewłaściwe hasło".
| Użytkownik i hasło
| są poprawne. Czy ktoś spotkał się z podobnym problemem ?
| Co powinienem zmienić.
Może dodaj ścieżkę do pliku mdw?
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=G:zestawaza.mdb; " & _
"Jet.OlEDB:System Database=C:System.mdw;", &
"User ID=xxx, Password=yyy"
Pozdrawiam
Grzegorz
O co chodzi i jak mozna sie dobrac do bazy?
Pozdrowienia
Agha
© 2009 Najlepszy miesiąc kawalerski w Polsce !!! - Ceske - Sjezdovky .cz. Design downloaded from free website templates