Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages
Started by Marek Idźkowski
Wed, 24 May 2017 16:36
Konwersja kodu z Access 2000 na wyższe
Author: Marek Idźkowski
Date: Wed, 24 May 2017 16:36
Date: Wed, 24 May 2017 16:36
50 lines
4513 bytes
4513 bytes
Witam wszystkich forumowiczów
Dobrych kilka lat temu stworzyłem na potrzeby własnej pracy bazę danych nieruchomości z formularzami wprowadzającymi dane oraz formularzami wyszukującymi.
Baza powstała przy pomocy wielu uprzejmych forumowiczów z tej grupy. Na wstępie chciałbym zaznaczyć, iż nie jestem programistą, ani informatykiem, a jedynie zaawansowanym użytkownikiem komputerów i oprogramowania, który potrafił zaimplementować fragmenty kodu z Waszych (forumowiczów) podpowiedzi do Bazy Danych, aby działała. Jako, że na paru komputerach firmowych mam zainstalowanego starego Office'a 2000 (który do dzisiaj w zupełności mi wystarcza do mojej pracy) pod Windows XP :-), baza danych powstawała pod Access 2000. Niestety do bazy danych dołączyło parę nowych osób, które posiadają nowsze Accessy i Windowsy i baza nie jest w pełni kompatybilna. Dużo funkcji i komend działa, niestety pewne fragmenty kodu nie działaj. Proszę o pomoc w modyfikacji kodu, aby stał się on kompatybilny pomiędzy Accessami (2000 i nowszymi). Kod ten jest odpowiedzialny za automatyczne powielanie wpisów w nowym formularzu(w pewnych listach wyborów) z poprzedniego formularza. Kod (makro) wygląda następująco:
Private Sub Polecenie233_Click()
Dim rs As Object
Set rs = Me.Recordset.Clone
If rs.EOF Or Not Me.NewRecord Then
Else
With rs
.MoveLast
Me![KombiWojewodztwo] = .Fields("Wojewodztwo")
Me![SpisPowiatow] = .Fields("Powiat")
Me![JednostkaEwid] = .Fields("JednostkaEwid")
Me![Obreb] = .Fields("Obreb")
Me![Kombi156] = .Fields("JednostkaEwid")
Me![Kombi190] = .Fields("Obreb")
Me![RodzajNieruch] = .Fields("RodzajNieruch")
Me![SpecyfikacjaNieruchomosci] = .Fields("SpecyfikacjaNieruch")
Me!SpecyfikacjaNieruchomosci.SetFocus
Me![Sprzedajacy] = .Fields("Sprzedajacy")
Me![Kupujacy] = .Fields("Kupujacy")
Me![ZrodloDanych] = .Fields("ZrodloDanych")
Me![StanPrawny] = .Fields("StanPrawny")
Me![WprowadzajacyDane] = .Fields("WprowadzajacyDane")
End With
End If
End Sub
Niestety powyższy kod nie działa na Accessach wyższych niż Access 2000
Dodam, że w moim Access 2000 mam zaznaczone następujące biblioteki w Referencjach:
Visual Basic For Applications
Microsoft Access 9.0 Object Library
OLE Automation
Microsoft ActiveX data Objects 2.1 Library
Microsoft DAO 3.6 Object Library
Microsoft Office Web Components 9.0
Microsoft ADO Ext. 2.8 for DDL and Security
niestety nie we wszystkich nowych Accessach występują te biblioteki i to chyba jest przyczyną braku kompatybilności. Czy można powyższy kod zmodyfikować, aby był kompatybilny pomiędzy platformami Accessa, czy może w jakiś sposób zaimplementować biblioteki z powyższej listy do nowszych Accessów (i gdzie je ewentualnie znaleźć ? - biblioteki)
Dziękuję za wszelkie sugestie i ewentualną pomoc.
Marek Idźkowski
Re: Konwersja kodu z Access 2000 na wyższe
Author: LeszekN
Date: Wed, 24 May 2017 21:25
Date: Wed, 24 May 2017 21:25
5 lines
1452 bytes
1452 bytes
Witaj co to znaczy nie działa? napisz komunikat błędu, to coś poradzimy. Leszek
Re: Konwersja kodu z Access 2000 na wyższe
Author: Marek Idźkowski
Date: Thu, 25 May 2017 13:28
Date: Thu, 25 May 2017 13:28
51 lines
3519 bytes
3519 bytes
Witam ponownie.
Poradziłem sobie. Brakowało w Accessie 2010 biblioteki MSOWC.DLL
Microsoft Office Web Components 9.0
Pożyczyłem sobie ze starego Accessa 2000.
Działa OK.
Jednak pojawił się inny problem w formularzu wyszukującym interesujące mnie dane.
Tzn W formularzu mam parę pól kombi, które reprezentują kwerendy wyszukujące odpowiednie dane. Jednym z pól kombi jest pole zawierające poszczególne lata transakcji nieruchomości - pokazuje tylko rok np 2013,2014,2015 jako listę. Ta lista tworzy się z dat transakcji np 2013-02-06, 2014-01-30, 2015-07-07.Kod poniżej:
'Procedura przy otwarciu formularza Wyszukaj
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Form_Open_Err
Dim i As Integer
Dim intFirst As Integer
Dim intLast As Integer
Dim strListaRok As String
' Create list for lstYear list box
intFirst = Year(DMin("[Data]", "BazaDanychTransakcjeKupnaSprzedazy"))
intLast = Year(DMax("[Data]", "BazaDanychTransakcjeKupnaSprzedazy"))
For i = intFirst To intLast
strListaRok = strListaRok & i & ";"
Next i
With Me.ListaRok
.RowSourceType = "Value List"
.RowSource = strListaRok
End With
Exit Sub
Form_Open_Err:
MsgBox "An unexpected error has occurred." _
& vbCrLf & "Procedure: Form_Open" _
& vbCrLf & "Error Number: " & Err.Number _
& vbCrLf & "Error Description: " & Err.Description _
, vbCritical, "Error"
End Sub
dodatkowo
Budowa kryteriów dla ciągu Rok
For Each varItem In Me.ListaRok.ItemsSelected
strRok = strRok & "," & Me.ListaRok.ItemData(varItem)
Next varItem
If Len(strRok) = 0 Then
strRok = "Like '*'"
Else
strRok = Right(strRok, Len(strRok) - 1)
strRok = "IN(" & strRok & ")"
End If
W Access 2000 daty wyświetlają się, natomiast w wyższych Accessach niestety pole kombi jest puste - nie pokazuje poszczególnych lat. Nie można wyszukać danych po założonych kryteriach, bo brakuje mu kryterium rok.
Nie wyświetla się żaden kod błędu.
Proszę o pomoc.
PS
Czy jest na grupie ktoś z Wrocławia lub okolic ?
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads