🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#137461
Author: Marek Idźkowski
Date: Wed, 24 May 2017 16:36
50 lines
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
#137462
Author: LeszekN
Date: Wed, 24 May 2017 21:25
5 lines
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
#137463
Author: Marek Idźkowski
Date: Thu, 25 May 2017 13:28
51 lines
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