(...)
| No to nie mo?na by3o od razu pisaa ?e chodzi o .NET? Chyba ntg (to jest
| grupa Accesowo - VBA-owa), ale jakby? spróbowa3 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()
(...)
| SQL to kiepski pomysł dla JET, lepszy to ADOX
Po cholerę ładować dodatkową bibliotekę, mało kompatybilną z filozofią
.NET, by przekonać się że jakaś tabela istnieje?
Jednak też uważam, że opieranie się na obsłudzę błędu jest mało eleganckim
(a w .net mało wydajnym rozwiązaniem), w zamian proponowałbym skorzystanie
z jakiegoś schematu, np.
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
DataTable schemaTable =
conn.GetOleDbSchemaTable(
OleDbSchemaGuid.Tables,
new object[] {null, null, null, "TABLE"});
ArrayList result = new ArrayList();
foreach(DataRow dr in schemaTable.Rows)
{
string tableName = dr[2].ToString();
result.Add(tableName);
}
conn.Close();
return result;
Innym rozwiązaniem, choć mniej zalecanym, jest skorzystanie z tabel
systemowych, np.:
Select
[Name]
From
MSysObjects
Where
Type = 6
Jest to ryzykowne z uwagi na to, że w przyszłości coś się może zmienić w
tabelach systemowych.
Pozdrawiam
Grzegorz
A jakbym chciał zrobić w ten sposób ??
OleDbConnection^ con;
con = gcnew OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data source =
"".\data\data.mdb;Jet OLEDB:Engine Type=5;");
con-Open();
OleDbCommand^ myCommand = gcnew OleDbCommand(mySelectQuery,con);
myCommand-CommandText = "SELECT name FROM sysobjects WHERE type = 'U' AND
name = 'Customers'";
OleDbDataReader^ myReader = myCommand-ExecuteReader();
if (myReader-Read())
System::Windows::Forms::MessageBox::Show ("Table Exists!");
else
System::Windows::Forms::MessageBox::Show ("Does not exist!");
tylko przy wykonywaniu:
myCommand-CommandText = "SELECT name FROM sysobjects WHERE type = 'U' AND
name = 'Customers'";
otrzymuje błąd:
"Aparat bazy danych Microsoft Jet nie może znaleźć tabeli wejściowej lub
kwerendy 'mdb'. Sprawdź, czy ona istnieje oraz czy nazwa jest poprawnie
napisana."
pozdrawiam
Juzer Przemysław Rachwał <prach@gazeta.plnapisał
|| jak sprawdziĂŚ czy istnieje tabela w bazie danyc za pomocÂą polecenia
SQL
|| ??
| SELECT Count(MSysObjects.Id) AS Id
| FROM MSysObjects
| WHERE (((MSysObjects.Name) Not Like "MSys*" And
| (MSysObjects.Name)="tWoj") AND ((MSysObjects.Type)=1));
|
| "tWoj" - nazwa tabeli
|
| jeżeli jest -1, w przeciwnym wypadku 0
ech, rynce opadają ...
Wytrzeszcz wzrok i znajdź i wyrzuć zbędny kawałek z warunku:
(...)
WHERE
Name Not Like "MSys*"
And
Name="tWoj"
:)))
Panie Rachwał, do excela, do excela ! To nie ta grupa !
stary odpier.... się z łachy swojej i pokaż posta ze swoim rozwiązaniem
SQL-owym tego banalnego problemu.... nie ma o jak szkoda...
Już pisano: formatowanie sql ! Brak owego to taka sama lameriada jak brak
wcięć w kodzie ! (mimo, że czasem działa! :))) )
to nie miało być formatowane... jak byś nie wiedział - a wiesz o tym
doskonale to z siatki QBE
Ale na poważnie: Sprawdzałeś Waść czy z dowolnego środowiska masz dostęp
do tabel systemowych mdb/mde ?
tak
Bo to, co w access'ie działa, gdzie indziej raczej ni-hu-hu!
a tu się mylisz bo nie sprawdziłeś dokładnie
Provider=Microsoft.Jet.OLEDB.4.0;
*User ID=PRach01;*
Data Source=C:Documents and SettingsAdministratorMoje
dokumentydb6.mdb;Mode=Share Deny None;
Extended Properties="";
*Jet OLEDB:System database=d:system.mdw;*
Jet OLEDB:Registry Path="";
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
A tu o owo "gdzie indziej" się rozchodzi ...
hmm
SELECT
Count(MSysObjects.Id) AS Id
FROM
MSysObjects
WHERE
MSysObjects.Name Not Like "MSys*" And
MSysObjects.Name="tWoj" AND
MSysObjects.Type=1
WITH OWNERACCESS OPTION;
można też tak.....
(...)
|| ech, rynce opadają ...
|| Wytrzeszcz wzrok i znajdź i wyrzuć zbędny kawałek z warunku:
|| (...)
|| WHERE
|| Name Not Like "MSys*"
|| And
|| Name="tWoj"
||
|| :)))
||
|| Panie Rachwał, do excela, do excela ! To nie ta grupa !
|
| stary odpier.... się z łachy swojej i pokaż posta ze swoim rozwiązaniem
| SQL-owym tego banalnego problemu.... nie ma o jak szkoda...
Wiesz, jestem na tej grupie od ponad 6 lat. Tego sql'a pisałem już pińcet
razy!
I dlatego nie chce mi się go pisać pińcet pierwszy raz.
|| Już pisano: formatowanie sql ! Brak owego to taka sama lameriada jak
|| brak wcięć w kodzie ! (mimo, że czasem działa! :))) )
|
| to nie miało być formatowane... jak byś nie wiedział - a wiesz o tym
| doskonale to z siatki QBE
Ależ od nieomylnego Rachwała można chyba wymagać rzeczy podstawowych?
|| Ale na poważnie: Sprawdzałeś Waść czy z dowolnego środowiska masz
|| dostęp do tabel systemowych mdb/mde ?
|
| tak
|
|| Bo to, co w access'ie działa, gdzie indziej raczej ni-hu-hu!
http://groups.google.pl/group/pl.comp.bazy-danych.msaccess/browse_thr...
| a tu się mylisz bo nie sprawdziłeś dokładnie
|
| Provider=Microsoft.Jet.OLEDB.4.0;
| *User ID=PRach01;*
| Data Source=C:Documents and SettingsAdministratorMoje
| dokumentydb6.mdb;Mode=Share Deny None;
| Extended Properties="";
| *Jet OLEDB:System database=d:system.mdw;*
| Jet OLEDB:Registry Path="";
| 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
A co mi tutaj podałeś i po co ? Tliła się za tym jakaś myśl czy ino
pomroczność jasna ?
|| A tu o owo "gdzie indziej" się rozchodzi ...
|
| hmm
|
| SELECT
| Count(MSysObjects.Id) AS Id
| FROM
| MSysObjects
| WHERE
| MSysObjects.Name Not Like "MSys*" And
| MSysObjects.Name="tWoj" AND
| MSysObjects.Type=1
| WITH OWNERACCESS OPTION;
|
| można też tak.....
Nadal się ośmieszasz. Najwyraźniej wściekłość zaciemnia Ci wzrok ...
Czemu służy warunek :
Name Not Like "MSys*"
?
a<0 and a=5
sic!
nadal mam tłumaczyć ?
A jeśli chcę poszukać tabelę "MSysMojaTabela" ? Nie wolno mi jakiejś tak
nazwać ?
Owszem, ja wiem co Ci chodzi po głowie: chcesz wyeliminować tabele
systemowe.
Ale po co ? W przestrzeni tabel i kwerend nazwy sa unikatowe!
No i jeszcze na koniec poczytaj sobie o "WITH OWNERACCESS OPTION" - ze
zrozumieniem!
W stringu przekazywanym jetowi nie ma to najmniejszego sensu! Coś takiego
ma sens JEDYNIE w zapisanych w mdb kwerendach!
Na koniec wyczyszczona postać Twej kwerendy:
SELECT
Count(*)
FROM
MSysObjects
WHERE
Name="tWoj"
AND
Type=1
(tabele lokalne!)
i nadal powtarzam: nie zawsze będziesz miał prawa do czytania z tabeli
systemowej accessa - o czym w cytowanym wątku.
DAO z MySQL nie ma żadnych problemów. Lepiej zerknąłbym na tabele w
MySQL - jak "się" utworzyły. Typ danych/wartość domyślna.
Pytanie - czy w ogóle jesteś w stanie ręcznie zmieniać coś w tych
tabelach (czyli ręcznie zmodyfikować na otwartej tabeli LP). Mam
dziwne wrażenie że dane zaimportowane do MySQL nie do końca pasują do
typów pól... Nigdy nie korzystałem z opcji "migracji" a po prostu
tworzyłem tabele od zera. I jest kilka kruczków w MySQL których trzeba
się wystrzegać... I jak się coś schrzani do dokładnie jest problem z
edycją wadliwych rekordów.
Hmm - a jaka jest dotychczasowa wartość pól LP dla tych rekordów?
emes- Hide quoted text -
- Show quoted text -
całą bazę i tablice za radą stworzyłem od zera, pole LP jest
SMALLINT(5)
a zresztą - proszę, to moja tablica
CREATE TABLE `baza`.`tblBook` (
`ID` int(10) unsigned NOT NULL auto_increment,
`PostDate` date NOT NULL,
`LP` smallint(5) default NULL,
`PostNumber` varchar(20) default NULL,
`CustID` int(11) NOT NULL,
`UserField` tinytext,
`Comments` tinytext,
PRIMARY KEY (`ID`),
KEY `Date` (`PostDate`),
KEY `CustID` (`CustID`),
CONSTRAINT `CustID` FOREIGN KEY (`CustID`) REFERENCES `tblCust`
(`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=cp1250;
I jeszcze dla podsumowania: Tabela zostaje przez ODBC podłączona do
Accessa, gdzie chcę wykonać procedurkę:
Dim DB As DAO.Database, RS As DAO.Recordset
Dim i As Integer
Dim strSQL As String
Set DB = CurrentDb
strSQL = "Select LP " _
& "FROM tblBook " _
& "WHERE PostDate=" & Chr(35) & DataZFormy_jako_yyyy-mm-dd
& Chr(35) & " " _
& "ORDER BY ID, LP;"
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset)
If Not RS.EOF And Not RS.BOF Then
RS.MoveLast
RS.MoveFirst
End If
With RS
For i = 1 To RS.RecordCount
.Edit
!LP = i
.Update 'i tu się wykrzacza z komunikatem: "aparat bazy danych
microsoft jet zatrzymał proces, ponieważ inny użytkownik próbuje
jednocześnie zmienić te same dane"
.MoveNext
Next
End With
MySQL w wersji 5.0.45, ODBC Connector wer. 3.51.23, próbowałem z
Officem 2003 PL i Eng, Officem 2007 PL i ENG, pod WinXP Pro PL i Eng
Baza w CP1250
Bład pojawia się niezależnie od tego, czy tabela pusta, czy ma już
jakieś wiersze. Wartościami pola LP są 1,2,3 itd.
Pomocy, proszę!
On Mar 13, 10:41 am, eme@tlen.pl wrote:
[...]
| DAO z MySQL nie ma żadnych problemów. Lepiej zerknąłbym na tabele w
| MySQL - jak "się" utworzyły. Typ danych/wartość domyślna.
| Pytanie - czy w ogóle jesteś w stanie ręcznie zmieniać coś w tych
| tabelach (czyli ręcznie zmodyfikować na otwartej tabeli LP). Mam
| dziwne wrażenie że dane zaimportowane do MySQL nie do końca pasują do
| typów pól... Nigdy nie korzystałem z opcji "migracji" a po prostu
| tworzyłem tabele od zera. I jest kilka kruczków w MySQL których trzeba
| się wystrzegać... I jak się coś schrzani do dokładnie jest problem z
| edycją wadliwych rekordów.
| Hmm - a jaka jest dotychczasowa wartość pól LP dla tych rekordów?
| emes- Hide quoted text -
| - Show quoted text -
całą bazę i tablice za radą stworzyłem od zera, pole LP jest
SMALLINT(5)
a zresztą - proszę, to moja tablica
CREATE TABLE `baza`.`tblBook` (
`ID` int(10) unsigned NOT NULL auto_increment,
`PostDate` date NOT NULL,
`LP` smallint(5) default NULL,
`PostNumber` varchar(20) default NULL,
`CustID` int(11) NOT NULL,
`UserField` tinytext,
`Comments` tinytext,
PRIMARY KEY (`ID`),
KEY `Date` (`PostDate`),
KEY `CustID` (`CustID`),
CONSTRAINT `CustID` FOREIGN KEY (`CustID`) REFERENCES `tblCust`
(`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=cp1250;
I jeszcze dla podsumowania: Tabela zostaje przez ODBC podłączona do
Accessa, gdzie chcę wykonać procedurkę:
Dim DB As DAO.Database, RS As DAO.Recordset
Dim i As Integer
Dim strSQL As String
Set DB = CurrentDb
strSQL = "Select LP " _
& "FROM tblBook " _
& "WHERE PostDate=" & Chr(35) & DataZFormy_jako_yyyy-mm-dd
& Chr(35) & " " _
& "ORDER BY ID, LP;"
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset)
If Not RS.EOF And Not RS.BOF Then
RS.MoveLast
RS.MoveFirst
End If
With RS
For i = 1 To RS.RecordCount
.Edit
!LP = i
.Update 'i tu się wykrzacza z komunikatem: "aparat bazy danych
microsoft jet zatrzymał proces, ponieważ inny użytkownik próbuje
jednocześnie zmienić te same dane"
.MoveNext
Next
End With
MySQL w wersji 5.0.45, ODBC Connector wer. 3.51.23, próbowałem z
Officem 2003 PL i Eng, Officem 2007 PL i ENG, pod WinXP Pro PL i Eng
Baza w CP1250
Bład pojawia się niezależnie od tego, czy tabela pusta, czy ma już
jakieś wiersze. Wartościami pola LP są 1,2,3 itd.
Pomocy, proszę!
--
pozdrawiam
Zawias
Nie napisałeś czy jeśli są dane to tabela jest edytowalna... Pewnie
tak skoro nic nie napisałeś.
Swoją drogą czeski film. Nie wiem. Ale jakoś się przyzwyczaiłem do
tego że nie używam formatów pól typu SMALLINT, TINYTEXT. Jakoś (może
niekoniecznie akurat z tymi) miałem problemy z niektórymi formatami -
bo access je różnie obsługuje.
Spróbuj jeszcze w adminie MySQL ustawić default dla ID - wartość NULL.
Czyli pole ma mieć jako default Null i typ pola Not Null...
No i na końcu spróbować jakiegoś prostszego SQLa którym wybierasz
rekordy - jak już inne sposoby wysiądą.
A czym tworzysz tabele? MySQL Administratorem?
emes
Od kiedy używam tabel połączonych i zauważyłem znaczny spadek wydajności. W
Helpie znalazłem opis pt.
"Optymalizacja wydajności tabel połączonych w bazie danych programu
Microsoft Access", a w nim następującą radę:
"Wydajność pracy z główną bazą danych, tabelami i formularzami można
znacznie zwiększyć, jeśli połączone bazy danych będą pozostawały przez cały
czas pracy otwarte. W tym celu należy utworzyć pustą tabelę w połączonej
bazie danych oraz utworzyć połączenie z tą tabelą w głównej bazie danych.
Następnie do otwarcia tabeli połączonej należy użyć metody OpenRecordset. W
ten sposób aparat bazy danych Microsoft Jet nie będzie wielokrotnie otwierał
i zamykał połączonej bazy danych, a także nie będzie niepotrzebnie tworzył i
usuwał związanego z bazą danych pliku .ldb."
Potrafię korzystać z metody OpenRecordset do otwierania tabeli, ale nie wiem
jak zmodyfikować wszystkie formularze i kwerendy korzystające z tabeli
połączonej o nazwie np. Tabela1. W szczególności proszę o wyjaśnienie
zwrotu:
"W tym celu należy utworzyć pustą tabelę w połączonej bazie danych oraz
utworzyć połączenie z tą tabelą w głównej bazie danych."
Ja rozumiem to tak: masz bazy: aplikacja.mdb (formularze, raporty etc.)
oraz dane.mdb (tylko tabele). Klasyczny podział "fronton/zaplecze". W
bazie dane.mdb tworzysz byle jaką tabelę i załączasz ją z pliku
aplikacja.mdb (tak samo jak zapewne i pozostałe tabele znajdujace się w
dane.mdb).
Nastepnie w aplikacja.mdb (np. przy jej uruchamianiu) otwierasz np. w
jakiejś globalnej procedurze Recordset, oparty na tejże dodatkowej
załączonej tabeli; tak jak opisali w helpie. Recordset pozostawiasz
otwarty aż do końca działania aplikacji. Nawet gdy w aplikacji
pozamykasz inne Recordsety, tabele, zapytania, formularze, raporty,
itd. - utrzymywane będzie "stałe połączenie" aplikacja.mdb-dane.mdb;
baza dane.mdb bedzie cały czas otwarta.
Wydaje mi sie ze w prostszej wersji podobny efekt można uzyskać,
otwierając gdzieś przy starcie aplikacji formularz, oparty na tej
dodatkowej tabeli i uczynić go ukrytym.
O czym ewentualnie trzeba bedzie pamiętać: jeżeli "z poziomu"
aplikacja.mdb będzie wywoływana defragmentacja lub naprawa bazy dane.mdb
(co jest możliwe, pod warunkiem, że nie bedzie otwarta żadna tabela
"pochodząca" z dane.mdb ; w sieci także przez innych użytkowników) -
przed wykonaniem tych czynności należy zamknąć dodatkowy Recordset.
A tak w ogóle nie wiedziałem o tym "tipsie", chociaż teraz wydaje mi się
logiczny. Coż, człowiek uczy sie przez całe życie (i tak ma być ;-)
Ciekaw jestem jednak, czy wzrost wydajności jest naprawdę aż tak
zauważalny.
Thnx.
Pozdrawiam -
Stanley
Access to Access:
http://web.pertus.com.pl/~stanley
mpop| Id | Nazwisko | Imię | Ulica|
mpop 1 Nowak Adam Jasna
mpop 2 Kita Radek Ciemna
mpopChce otrzymac wynik to TextBox1.Text, ktory to
mpopzawieralby nazwisko Kita za pomoca SQL'a to by
mpopbylo tak "Select nazwisko from tabela WHERE Id='2'"
mpopJak podlaczyc sie do bazy ?
mpopJak wykonac instrukcje SQL'a ?
mpopJak tego dokonac w najprostszy sposob ??
mpopProsze o pomoc w postaci przykladu jesli to mozliwe.
Po pierwsze:
ZAINSTALUJ Framework.NET SDK (Software Development Kit), ilość
zawartych przykładów jest PORAŻAJĄCA.
Po kolejne :-) :
Jest kilka metod:
1. Za pomocą OleDb - gdy nie korzystasz z MS SQL Server
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SQLClient 'to jest potrzebne tylko gdy łączysz się do
serwera SQL
Namespace COSTAM
Public Class MyUser
public function GetDetails(sUserID as integer) as string
dim strConn as string = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=c:access_daneUserid.mdb" 'dla pliku MDB
'lub
strConn = "Provider=SQLOLEDB;Database=MojaBaza;Server=127.0.0.1;User id=username;password=mojetajnehaslo"
' gdy korzystasz z System.Data.SqlClient, to niepotrzebny
jest Provider w ciągu połączenia
dim Conn as new OleDbConnection(strConn)
dim objCmd as OleDbCommand = new OleDbCommand()
dim wynik as string
Conn.Open
objCmd.Connection = Conn
objCmd.CommandText = "Select nazwisko from tabela WHERE
Id=" & sUserID
objCmd.CommandType = CommandType.text
dim objReader as OleDbDataReader
try
objCmd.Connection.Open()
objReader = objCmd.ExecuteReader
catch ex as OleDbException
throw ex
end try
while objReader.Read()
wynik = objReader.GetString(0)
end while
objReader.Close
Conn.Close 'zamykamy polaczenie
return wynik
end function
End Class
END NAMESPACE
Aha, to zadziała odpowiednio, gdy dla jednego ID jest tylko JEDNO
nazwisko.
Jak chcesz skorzystać z (klasy?) SqlClient, to zobacz do helpa, jest
MNÓSTWO przykładów.
Pozdrawiam
Jacek
Witam,
No dobrze, a jezeli tabela ma byc polaczona ze zrodla ODBC to gdzie
wstawic
polaczenie (bez wywolywania okna polaczen odbc)??
Pozdrawiam
tetros
(CUT)
Przykład wycięty z helpa :
Sub ConnectionObjectX()
Dim wrkJet As Workspace
Dim dbsNorthwind As Database
Dim wrkODBC As Workspace
Dim conWyd As Connection
Dim conWyd2 As Connection
Dim conPętla As Connection
Dim prpPętla As Property
' Otwórz obiekt Microsoft Jet Database.
Set wrkJet = CreateWorkspace("NowyObszarJet", _
"admin", "", dbUseJet)
Set dbsNorthwind = _
wrkJet.OpenDatabase("C:Program FilesMicrosoft
OfficeOfficePrzykldyNorthwind.mdb")
' Utwórz obiekt ODBCDirect Workspace i otwórz
' obiekty Connection.
Set wrkODBC = CreateWorkspace("NowyObszarODBC", _
"admin", "", dbUseODBC)
Set conWyd = _
wrkODBC.OpenConnection("Połączenie1", , , _
"ODBC;DATABASE=wyd;UID=sa;PWD=;DSN=Wydawcy")
Set conWyd2 = _
wrkODBC.OpenConnection("Połączenie2", , _
True, _
"ODBC;DATABASE=wyd;UID=sa;PWD=;DSN=Wydawcy")
Debug.Print "Właściwości obiektu Database:"
With dbsNorthwind
' Wylicz elementy kolekcji Properties obiektu
' Database.
For Each prpPętla In .Properties
On Error Resume Next
Debug.Print " " & prpPętla.Name & _
" = " & prpPętla.Value
On Error GoTo 0
Next prpPętla
End With
' Wylicz elementy kolekcji Connections.
For Each conPętla In wrkODBC.Connections
Debug.Print "Właściwości obiektu Connection " _
; conPętla.Name & ":"
With conPętla
' Drukuj wartości właściwości, wywołując
' każdy obiekt Property. Obiekt Connection
' nie posiada kolekcji Properties.
Debug.Print " Connect = " & .Connect
' Właściwość zwraca w rzeczywistości obiekt
' Database.
Debug.Print " Database[.Name] = " & _
.Database.Name
Debug.Print " Name = " & .Name
Debug.Print " QueryTimeout = " & _
.QueryTimeout
Debug.Print " RecordsAffected = " & _
.RecordsAffected
Debug.Print " StillExecuting = " & _
.StillExecuting
Debug.Print " Transactions = " & _
.Transactions
Debug.Print " Updatable = " & .Updatable
End With
Next conPętla
dbsNorthwind.Close
conWyd.Close
conWyd2.Close
wrkJet.Close
wrkODBC.Close
End Sub
- ustawiasz:
me.kombi0.rowsource = ...
Blad! Masz ustawic recordset, zupelnie tak samo jak w przypadku formularza!
RowSource jest wlasciwoscia tekstowa, Recordset obiektowa ;-)
-----Original Message-----
From: "gazeta"<as@gazeta.pl
Sent: 08-01-16 16:30:06
To: "pl-comp-bazy-danych-msacc@newsgate.pl"<pl-comp-bazy-danych-msacc@newsgate.pl
Subject: Re: Czy jest mozliwosc usprawnic ADP.
Private Sub Form_Open(Cancel As Integer)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
'Create a new ADO Connection object
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Access.OLEDB.10.0"
.Properties("Data Provider").Value = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = _
"D:AsFabrykaAdp est.mdb"
.Open
End With
'Create an instance of the ADO Recordset class, and
'set its properties
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Source = "SELECT * FROM table1"
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
'Set the form's Recordset property to the ADO recordset
Set Me.Recordset = rs
Set rs = Nothing
Set cn = Nothing
Set Me.Combo.RowSource = rs '#blad cutuje: inwalid use
of property
Set rs = Nothing
Set cn = Nothing
End Sub
-----------------------------------------------------
Dziala jezeli chodzi o "zasilenie formularza, ale przy probie popiecia do
wlasciwosci zrodlo wierszy wychodzi blad"
VVlodek
[Message truncated. Tap Edit-Mark for Download to get remaining portion.]
© 2009 Najlepszy miesiąc kawalerski w Polsce !!! - Ceske - Sjezdovky .cz. Design downloaded from free website templates