powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отдельный топик для Быкиса и П-Л по совету Вади
25 сообщений из 323, страница 12 из 13
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092195
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительФокус в том, что векселя позволяют отложить признание дохода для налогобложения, если есть условие "но не ранее чем". Срок обращения векселя отсчитывается либо от даты выпуска векселя либо от этой даты. Если не оговорено иное (указана дата в бланке) то срок обращения равен году.
Это учтено:
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092232
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Булке: За выравнивание спасибо, сделаю.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092390
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аллё! А мне тупому хто объяснять буде? Нажали сделать новый вексель. Как узнать его ключ, к которому привязывать всё на 3 шаге?
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092405
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбрали новый вексель.

Попали на экран с опциями. Понажимали опшины и чекбоксы. Нажали далее.

Попали на экран с оставшимися данными. Те, которые не бледно-серый (не видно) задали. Нажали готово.

Все это время данные болтаются в непривязанных формах. При нажатии готово данные пишутся в несколько таблиц (5 шт). Запись обернута в транзакцию.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092432
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А значение ключей откудабрать (чтобы првильно по 5 таблицам разнести) ?
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092436
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЛ имеет в виду, что значения, которые потом используются в инсерте содержатся в свойстве .Value элементов управления на форме.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092442
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухой быкА значение ключей откудабрать (чтобы првильно по 5 таблицам разнести) ?
Думаю ID векселя возвращается в первой SP, как return значение, а потом уже используется в остальных инсертах/апдейтах транзакции...
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092466
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это меня интереует - как узнать что к чему цеплять? Просо аля @@identity или програмист "трёхзвенку" на аксесе раскрутил ? Ж)
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092478
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-III бухой быкА значение ключей откудабрать (чтобы првильно по 5 таблицам разнести) ?
Думаю ID векселя возвращается в первой SP, как return значение, а потом уже используется в остальных инсертах/апдейтах транзакции...
Абсолютно верно - без затей и изысков.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
Public Function AddDeposit()

    ' Значения PK-Identity извлекаемые сразу после вставки
    ' Строки для формирования SQL операторов по вставке данных
    Dim sDealSQL As String
    Dim sDealProlongationSQL As String
    Dim sDealOperationSQL As String
    Dim sDealInterestSQL As String
    
    ' Инициализация значения PK-Identity, извлекаемых сразу после вставки
    Me!iDealID = Null:             sDealSQL = ""
    Me!iDealProlongationID = Null: sDealProlongationSQL = ""
    Me!iDealOperationID = Null:    sDealOperationSQL = ""
    Me!iDealInterestID = Null:     sDealInterestSQL = ""
    
    ' Рекордсет для получения PK-Identity
    Dim rsID As ADODB.Recordset, n As Integer
    ' Справочник типов инструментов
    Dim rsType As ADODB.Recordset
    Set rsType = CurrentProject.Connection.Execute( _
        "SELECT * FROM qrInstrumentType " & _
        "WHERE sInstrumentTypeCode='" & Me.sub3Instrument.Form!sInstrumentTypeCode & "'" _
    )
    If rsType.EOF Then
        Beep
        MsgBox _
            "В справочнике инструментов не найден " & _
            "депозит выбранного типа " & _
            "'" & Me.sub3Instrument.Form!sInstrumentTypeCode & "'. " & _
            vbExclamation + vbOKOnly, Me.lblStep.Caption
        Me.bOK = False
        Exit Function
    End If
    
    ' Объекты ADODB для организации транзакции
    Dim cnn As ADODB.Connection, sServerName As String, sDatabaseName As String
        
    DoCmd.Hourglass True
    Application.Echo False
    DoCmd.OpenForm "dlgDealWizardInsert", acNormal, , , acFormEdit, acWindowNormal
    Forms!dlgDealWizardInsert.SetFocus
    Forms!dlgDealWizardInsert.Repaint
    Application.Echo True
    Forms!dlgDealWizardInsert.Repaint: Sleep  700 : DoEvents
    
    On Error GoTo Err_Transaction
    Call modSQL.GetConnectionInfo(sServerName, sDatabaseName)
    Call modSQL.OpenConnection(sServerName, sDatabaseName, cnn)
    cnn.BeginTrans
    
    With Me.sub3Instrument.Form
        
        '
        ' TODO: !!!Проверить на NULL sDealSeriesCode для НЕ серификатов
        '
        sDealSQL = _
            "INSERT INTO dbo.TAB_Deal (" & _
                "sInstrumentTypeCode, " & _
                "iAssetCustomerID, iInvestmentCustomerID, " & _
                "sDealSeriesCode, mnDealPrincipalAmount, sCurrencyCode, dbDealParameter, " & _
                "dbDealInterestRate, dtDealFromDate, dtDealToDate " & _
            ") VALUES (" & _
                modSQL.AddString(!sInstrumentTypeCode) & _
                modSQL.AddLong(!iAssetCustomerID) & _
                modSQL.AddLong(!iInvestmentCustomerID) & _
                modSQL.AddString(!sDepositSertificateNomer) & _
                modSQL.AddDecimal(!mnDealPrincipalAmount) & _
                modSQL.AddString(!sCurrencyCode) & _
                modSQL.AddDecimal(!dbDepositParameter) & _
                modSQL.AddDecimal(!dbDealInterestRate) & _
                modSQL.AddDate(!dtDealFromDate) & _
                modSQL.AddDate(!dtDealToDate, True) & _
            ")"
            
        On Error Resume Next
        n =  0 : cnn.Execute sDealSQL, n
        Set rsID = cnn.Execute("SELECT IDENT_CURRENT('dbo.TAB_Deal'), SCOPE_IDENTITY()")
        If n <>  1  Then
            modError.ErrorMessage  509 , "Запись в таблицу сделок не была добавлена."
            GoTo Err_Transaction
        End If
        On Error GoTo Err_Transaction
        If rsID.Fields( 0 ) <> rsID.Fields( 1 ) Then
            modError.ErrorMessage  509 , _
                "При добавлении записи о сделке в базу данных " & _
                "неправильно определился уникальный код сделки."
            GoTo Err_Transaction
        End If
        Me!iDealID = rsID.Fields( 0 )
        rsID.Close: Set rsID = Nothing
    
        If Nz(rsType!sInstrumentTypeInterestMultyPaymentFlag, "N") = "N" Then
            ' Простые депозиты с единственным процентным периодом
            sDealProlongationSQL = _
                "INSERT INTO dbo.TAB_DealProlongation (" & _
                    "iDealID, " & _
                    "sDealProlongationContractCode, sDealProlongationContractDate, " & _
                    "dtDealProlongationFromDate, dtDealProlongationToDate, dbDealProlongationInterestRate " & _
                ") VALUES (" & _
                    modSQL.AddLong(Me!iDealID) & _
                    modSQL.AddString(!sDealOperationContractCode) & _
                    modSQL.AddDate(!dtDealOperationContractDate) & _
                    modSQL.AddDate(!dtDealFromDate) & _
                    modSQL.AddDate(!dtDealToDate) & _
                    modSQL.AddDecimal(!dbDealInterestRate, True) & _
                ")"
            On Error Resume Next
            n =  0 : cnn.Execute sDealProlongationSQL, n
            Set rsID = cnn.Execute("SELECT IDENT_CURRENT('dbo.TAB_DealProlongation'), SCOPE_IDENTITY()")
            If n <>  1  Then
                modError.ErrorMessage  509 , "Запись в таблицу сделок не была добавлена."
                GoTo Err_Transaction
            End If
            On Error GoTo Err_Transaction
            If rsID.Fields( 0 ) <> rsID.Fields( 1 ) Then
                modError.ErrorMessage  509 , _
                    "При добавлении записи о сделке в базу данных " & _
                    "неправильно определился уникальный код сделки."
                GoTo Err_Transaction
            End If
            Me!iDealProlongationID = rsID.Fields( 0 )
            rsID.Close: Set rsID = Nothing
            
            sDealOperationSQL = _
                "INSERT INTO dbo.TAB_DealOperation (" & _
                    "iDealID, sDealOperationTypeCode, iCustomerID, " & _
                    "sDealOperationContractCode, dtDealOperationContractDate, " & _
                    "dtDealOperationValueDate, dtDealOperationFactDate, " & _
                    "mnDealOperationPrincipalAmount, mnDealOperationInterestAmount, " & _
                    "mnDealOperationPrincipalFact, mnDealOperationInterestFact" & _
                ") VALUES (" & _
                    modSQL.AddLong(Me!iDealID) & _
                    modSQL.AddString("PI") & _
                    modSQL.AddLong(!iAssetCustomerID) & _
                    modSQL.AddString(!sDealOperationContractCode) & _
                    modSQL.AddDate(!dtDealOperationContractDate) & _
                    modSQL.AddDate(!dtDealOperationValueDate) & _
                    modSQL.AddDate(!dtDealOperationFactDate) & _
                    modSQL.AddDecimal((- 1 ) * !mnDealPrincipalAmount) & _
                    modSQL.AddDecimal( 0 ) & _
                    modSQL.AddDecimal((- 1 ) * !mnDealPrincipalAmount) & _
                    modSQL.AddDecimal( 0 , True) & _
                ")"
            On Error Resume Next
            n =  0 : cnn.Execute sDealOperationSQL, n
            Set rsID = cnn.Execute("SELECT IDENT_CURRENT('dbo.TAB_DealOperation'), SCOPE_IDENTITY()")
            If n <>  1  Then
                modError.ErrorMessage  509 , _
                    "Запись об операции покупки не была добавлена " & _
                    "в таблицу операций по сделкам."
                GoTo Err_Transaction
            End If
            On Error GoTo Err_Transaction
            If rsID.Fields( 0 ) <> rsID.Fields( 1 ) Then
                modError.ErrorMessage  509 , _
                    "При добавлении записи об операции покупки в базу данных " & _
                    "неправильно определился уникальный код операции ."
                GoTo Err_Transaction
            End If
            Me!iDealOperationID = rsID.Fields( 0 )
            
            sDealInterestSQL = _
                "INSERT INTO dbo.TAB_DealInterest (" & _
                    "iDealID, iDealOperationID, " & _
                    "mnDealPrincipalAmountCalc, dbDealInterestRateCalc, " & _
                    "dtDealInterestFromCalc, dtDealInterestToCalc, mnDealInterestAmountCalc, " & _
                    "sMethodCode" & _
                ") VALUES (" & _
                    modSQL.AddLong(Me!iDealID) & _
                    modSQL.AddLong(Me!iDealOperationID) & _
                    modSQL.AddDecimal(!mnDealPrincipalAmountCalc) & _
                    modSQL.AddDecimal(!dbDealInterestRate) & _
                    modSQL.AddDate(!dtDealFromDate) & _
                    modSQL.AddDate(!dtDealToDate) & _
                    modSQL.AddDecimal(!mnDealInterestAmountCalc) & _
                    modSQL.AddString("D", True) & _
                ")"
            On Error Resume Next
            n =  0 : cnn.Execute sDealInterestSQL, n
            Set rsID = cnn.Execute("SELECT IDENT_CURRENT('dbo.TAB_DealInterest'), SCOPE_IDENTITY()")
            If n <>  1  Then
                modError.ErrorMessage  509 , _
                    "Не была добавлена запись о начислении процентов по векселю " & _
                    "в таблицу процентных периодов."
                GoTo Err_Transaction
            End If
            On Error GoTo Err_Transaction
            If rsID.Fields( 0 ) <> rsID.Fields( 1 ) Then
                modError.ErrorMessage  509 , _
                    "При добавлении записи о начислении процентов в базу данных " & _
                    "неправильно определился уникальный код процентного периода."
                GoTo Err_Transaction
            End If
            Me!iDealOperationID = rsID.Fields( 0 )
            rsID.Close: Set rsID = Nothing
        Else
            ' Сложные депозиты с нескольким процентными периодами
            '
            ' TODO: Insert Code
            '
        End If
    End With
    
    cnn.CommitTrans: cnn.Close: Set cnn = Nothing
    DoCmd.Close acForm, "dlgDealWizardInsert", acSaveNo
    Me.bOK = True
    AddDeposit = True
    Exit Function
    
Err_Transaction:
    On Error Resume Next
    rsID.Close: Set rsID = Nothing
    cnn.RollbackTrans: cnn.Close: Set cnn = Nothing
    DoCmd.Close acForm, "dlgDealWizardInsert", acSaveNo
    On Error GoTo  0 
    Me.bOK = False
    AddDeposit = False
    Exit Function

End Function
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092485
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял. а зачем тут транзакция?
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092560
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы не было несогласованных данных. Финансовый инструмент (депозит, вексель) разложен по нескольким таблмицам, данные в них должны соответствовать друг другу.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092585
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял. лентяй ты!
сделал бы пару классов для векселей...
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092608
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухой быкпонял. лентяй ты!
сделал бы пару классов для векселей...
А у меня мечта научится с классами работать... Реализовал наследование и вперед, как темплейт используешь, не надо все формочки редактирования переделывать... Эх наследование - ето круть, но только что-то на изучение нового все время не хватает времени :(
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092654
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухой быкпонял. лентяй ты!
сделал бы пару классов для векселей...классы нафик.

одну хранимку
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092694
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если одной хранимкой - то тогда действительно транзакци нужна...
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092745
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-IIIА у меня мечта научится с классами работать...
Не на VBA.

Имей в виду, что по мере того, как классы начинают оттягивать на себя бизнес-логику, она уходит из серверной части.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092754
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 бухой быкпонял. лентяй ты!
сделал бы пару классов для векселей...классы нафик.

одну хранимку
Да. Как только VBA устаканится и немного отстоится, перетащу.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092773
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Затеем дискуссию о том что такое бизнесс-логика ? ;)
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092803
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык само собо! Языком почесать это ж в кайф! Вот моя бизнес-логика для векселей:
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35092838
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь давай осюда выделим один объект этой самой бизнесс-логики и один экземпляр это объекта. А потом будем спорить являецо ли это выделение бизнеслогикой !
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35093515
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-Любитель George-IIIА у меня мечта научится с классами работать...
Не на VBA.

Имей в виду, что по мере того, как классы начинают оттягивать на себя бизнес-логику, она уходит из серверной части.
Да, я знаю про это, но я планирую слезать с Access+VBA, на Java и бесплатные среды разработки для неё!
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35093724
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лана, подолжу мысль сам. По-твойму класс для векселей не нужен, т.к. он оттенят бизнес-логику с сервера на клиент . Можно предположить, что бизнесс логикой (по твоей картинке) является (млин пропала при ответе, и когда уже это сделают...) проверка значений атрибутов векселя, изменения данных, и прчие процессы. На сервере есть и объекты БЛ и экземпляры этих объектов.
Проверка вводимых значений атрибутов векселя - у тебя происходит в самой форме и в вба. Но так как ты утверждаешь, что вся логика у тя на сервере - следовательно проверка ввода данных не является БЛ (в отличие от их хранения и последующей обработки). На клиенте, получается БЛ отчасти дублируется и создаются (но не хранятся) экземпляры объектов БЛ.
Итак, часть приложения, состоящая из той части БЛ, которая регламентирует ввод данных и создание экземпляра объекта БЛ - не является БЛ как таковой.
Внимаине вопрос - учитывая "итак" какую БЛ оттянет класс векселя на клиент ?
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35093820
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухой быкПроверка вводимых значений атрибутов векселя - у тебя происходит в самой форме и в вба. Сообразно тому, как все эти атрибуты заданы в таблицах данных на сервере. Эти данные используются как кодом VBA на клиенте так и ф-иями и процедурами на сервере. Если бывает "event driven arcitecture", то это можно обозвать "(meta)data driven arcitecture"

Мы плавно возвращаемся к противостоянию настройка метаданных vs "чистое прямое" программирование
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35094428
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни к чему мы не возвращаемся :)
Мы пытаемси выяснить являеццо ли "(meta)data driven arcitecture" реализацией БЛ на клиенте... Я так и не понял.
...
Рейтинг: 0 / 0
Отдельный топик для Быкиса и П-Л по совету Вади
    #35094480
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухой быкЯ так и не понял.(Шёпотом, озираясь:) Я и сам не знаю
...
Рейтинг: 0 / 0
25 сообщений из 323, страница 12 из 13
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отдельный топик для Быкиса и П-Л по совету Вади
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]