上传用户:zhpu1995
上传日期:2013-09-06
资源大小:61151k
文件大小:87k
源码类别:

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{65A39231-6133-11D1-BAA2-444553540000}#1.0#0"; "vslight6.OCX"
  3. Object = "{C5DE3F80-3376-11D2-BAA4-04F205C10000}#1.0#0"; "Vsflex6d.ocx"
  4. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
  5. Begin VB.Form JZ_FrmTranList 
  6.    Caption         =   "结转生产成本"
  7.    ClientHeight    =   6225
  8.    ClientLeft      =   60
  9.    ClientTop       =   345
  10.    ClientWidth     =   9240
  11.    Icon            =   "结转凭证_成本结转.frx":0000
  12.    KeyPreview      =   -1  'True
  13.    LinkTopic       =   "Form4"
  14.    ScaleHeight     =   6225
  15.    ScaleWidth      =   9240
  16.    StartUpPosition =   2  '屏幕中心
  17.    Begin VB.PictureBox Pic_Title 
  18.       AutoRedraw      =   -1  'True
  19.       Height          =   1155
  20.       Left            =   0
  21.       Picture         =   "结转凭证_成本结转.frx":1042
  22.       ScaleHeight     =   1095
  23.       ScaleMode       =   0  'User
  24.       ScaleWidth      =   9264.57
  25.       TabIndex        =   1
  26.       Top             =   570
  27.       Width           =   9245
  28.       Begin VB.ComboBox Combo_KJQJ 
  29.          Height          =   300
  30.          Left            =   1620
  31.          Style           =   2  'Dropdown List
  32.          TabIndex        =   8
  33.          Top             =   750
  34.          Width           =   2025
  35.       End
  36.       Begin MSComctlLib.ImageList ImageList1 
  37.          Left            =   6840
  38.          Top             =   30
  39.          _ExtentX        =   1005
  40.          _ExtentY        =   1005
  41.          BackColor       =   -2147483643
  42.          ImageWidth      =   16
  43.          ImageHeight     =   16
  44.          MaskColor       =   12632256
  45.          _Version        =   393216
  46.          BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  47.             NumListImages   =   22
  48.             BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  49.                Picture         =   "结转凭证_成本结转.frx":35106
  50.                Key             =   "sz"
  51.             EndProperty
  52.             BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  53.                Picture         =   "结转凭证_成本结转.frx":354A0
  54.                Key             =   "dy"
  55.             EndProperty
  56.             BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  57.                Picture         =   "结转凭证_成本结转.frx":3583A
  58.                Key             =   "yl"
  59.             EndProperty
  60.             BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  61.                Picture         =   "结转凭证_成本结转.frx":35BD4
  62.                Key             =   "xg"
  63.             EndProperty
  64.             BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  65.                Picture         =   "结转凭证_成本结转.frx":35F6E
  66.                Key             =   "zh"
  67.             EndProperty
  68.             BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  69.                Picture         =   "结转凭证_成本结转.frx":36308
  70.                Key             =   "sh"
  71.             EndProperty
  72.             BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  73.                Picture         =   "结转凭证_成本结转.frx":366A2
  74.                Key             =   "bc"
  75.             EndProperty
  76.             BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  77.                Picture         =   "结转凭证_成本结转.frx":36A3C
  78.                Key             =   "fq"
  79.             EndProperty
  80.             BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  81.                Picture         =   "结转凭证_成本结转.frx":36DD6
  82.                Key             =   "bz"
  83.             EndProperty
  84.             BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  85.                Picture         =   "结转凭证_成本结转.frx":37170
  86.                Key             =   "tc"
  87.             EndProperty
  88.             BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  89.                Picture         =   "结转凭证_成本结转.frx":3750A
  90.                Key             =   "bcgs"
  91.             EndProperty
  92.             BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  93.                Picture         =   "结转凭证_成本结转.frx":378A4
  94.                Key             =   "mrlk"
  95.             EndProperty
  96.             BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  97.                Picture         =   "结转凭证_成本结转.frx":37C3E
  98.                Key             =   "xsxm"
  99.             EndProperty
  100.             BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  101.                Picture         =   "结转凭证_成本结转.frx":37FD8
  102.                Key             =   "first"
  103.             EndProperty
  104.             BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  105.                Picture         =   "结转凭证_成本结转.frx":38372
  106.                Key             =   "prev"
  107.             EndProperty
  108.             BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  109.                Picture         =   "结转凭证_成本结转.frx":3870C
  110.                Key             =   "next"
  111.             EndProperty
  112.             BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  113.                Picture         =   "结转凭证_成本结转.frx":38AA6
  114.                Key             =   "last"
  115.             EndProperty
  116.             BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  117.                Picture         =   "结转凭证_成本结转.frx":38E40
  118.                Key             =   "xx"
  119.             EndProperty
  120.             BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  121.                Picture         =   "结转凭证_成本结转.frx":391DA
  122.                Key             =   "define"
  123.             EndProperty
  124.             BeginProperty ListImage20 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  125.                Picture         =   "结转凭证_成本结转.frx":39574
  126.                Key             =   "exec"
  127.             EndProperty
  128.             BeginProperty ListImage21 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  129.                Picture         =   "结转凭证_成本结转.frx":3990E
  130.                Key             =   "xz"
  131.             EndProperty
  132.             BeginProperty ListImage22 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  133.                Picture         =   "结转凭证_成本结转.frx":39CA8
  134.                Key             =   "sc"
  135.             EndProperty
  136.          EndProperty
  137.       End
  138.       Begin VB.Label tsLabel 
  139.          AutoSize        =   -1  'True
  140.          BackColor       =   &H80000018&
  141.          BackStyle       =   0  'Transparent
  142.          Caption         =   "结转生产成本"
  143.          BeginProperty Font 
  144.             Name            =   "宋体"
  145.             Size            =   14.25
  146.             Charset         =   134
  147.             Weight          =   700
  148.             Underline       =   0   'False
  149.             Italic          =   0   'False
  150.             Strikethrough   =   0   'False
  151.          EndProperty
  152.          ForeColor       =   &H00000000&
  153.          Height          =   285
  154.          Index           =   6
  155.          Left            =   360
  156.          TabIndex        =   7
  157.          Top             =   240
  158.          Width           =   1800
  159.       End
  160.       Begin VB.Label tsLabel 
  161.          AutoSize        =   -1  'True
  162.          BackStyle       =   0  'Transparent
  163.          Caption         =   "当前记录"
  164.          Height          =   180
  165.          Index           =   13
  166.          Left            =   7350
  167.          TabIndex        =   6
  168.          Top             =   810
  169.          Width           =   720
  170.       End
  171.       Begin VB.Label tsLabel 
  172.          AutoSize        =   -1  'True
  173.          BackStyle       =   0  'Transparent
  174.          Caption         =   "行)"
  175.          Height          =   180
  176.          Index           =   12
  177.          Left            =   8775
  178.          TabIndex        =   5
  179.          Top             =   810
  180.          Width           =   270
  181.       End
  182.       Begin VB.Label tsLabel 
  183.          AutoSize        =   -1  'True
  184.          BackStyle       =   0  'Transparent
  185.          Caption         =   "(第"
  186.          Height          =   180
  187.          Index           =   11
  188.          Left            =   8160
  189.          TabIndex        =   4
  190.          Top             =   810
  191.          Width           =   270
  192.       End
  193.       Begin VB.Label Lab_Row 
  194.          Alignment       =   2  'Center
  195.          Appearance      =   0  'Flat
  196.          AutoSize        =   -1  'True
  197.          BackColor       =   &H80000005&
  198.          BackStyle       =   0  'Transparent
  199.          ForeColor       =   &H00FF0000&
  200.          Height          =   180
  201.          Left            =   8625
  202.          TabIndex        =   3
  203.          Top             =   810
  204.          Width           =   90
  205.       End
  206.       Begin VB.Label tsLabel 
  207.          AutoSize        =   -1  'True
  208.          BackStyle       =   0  'Transparent
  209.          Caption         =   "会计期间:"
  210.          Height          =   180
  211.          Index           =   0
  212.          Left            =   720
  213.          TabIndex        =   2
  214.          Top             =   810
  215.          Width           =   810
  216.       End
  217.    End
  218.    Begin VB.Timer Timer1 
  219.       Interval        =   1
  220.       Left            =   3570
  221.       Top             =   570
  222.    End
  223.    Begin VSFlex6DAOCtl.vsFlexGrid CzxsGrid 
  224.       Height          =   4485
  225.       Left            =   0
  226.       TabIndex        =   0
  227.       Top             =   1740
  228.       Width           =   9240
  229.       _ExtentX        =   16298
  230.       _ExtentY        =   7911
  231.       _ConvInfo       =   1
  232.       Appearance      =   1
  233.       BorderStyle     =   1
  234.       Enabled         =   -1  'True
  235.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  236.          Name            =   "宋体"
  237.          Size            =   9
  238.          Charset         =   134
  239.          Weight          =   400
  240.          Underline       =   0   'False
  241.          Italic          =   0   'False
  242.          Strikethrough   =   0   'False
  243.       EndProperty
  244.       MousePointer    =   0
  245.       BackColor       =   16777215
  246.       ForeColor       =   -2147483640
  247.       BackColorFixed  =   -2147483648
  248.       ForeColorFixed  =   -2147483630
  249.       BackColorSel    =   -2147483635
  250.       ForeColorSel    =   -2147483634
  251.       BackColorBkg    =   8421504
  252.       BackColorAlternate=   16777215
  253.       GridColor       =   -2147483633
  254.       GridColorFixed  =   -2147483632
  255.       TreeColor       =   -2147483632
  256.       FloodColor      =   192
  257.       SheetBorder     =   -2147483642
  258.       FocusRect       =   1
  259.       HighLight       =   1
  260.       AllowSelection  =   -1  'True
  261.       AllowBigSelection=   -1  'True
  262.       AllowUserResizing=   0
  263.       SelectionMode   =   0
  264.       GridLines       =   1
  265.       GridLinesFixed  =   2
  266.       GridLineWidth   =   1
  267.       Rows            =   200
  268.       Cols            =   10
  269.       FixedRows       =   1
  270.       FixedCols       =   0
  271.       RowHeightMin    =   0
  272.       RowHeightMax    =   0
  273.       ColWidthMin     =   0
  274.       ColWidthMax     =   0
  275.       ExtendLastCol   =   0   'False
  276.       FormatString    =   ""
  277.       ScrollTrack     =   0   'False
  278.       ScrollBars      =   3
  279.       ScrollTips      =   0   'False
  280.       MergeCells      =   0
  281.       MergeCompare    =   0
  282.       AutoResize      =   -1  'True
  283.       AutoSizeMode    =   0
  284.       AutoSearch      =   0
  285.       MultiTotals     =   -1  'True
  286.       SubtotalPosition=   1
  287.       OutlineBar      =   0
  288.       OutlineCol      =   0
  289.       Ellipsis        =   0
  290.       ExplorerBar     =   0
  291.       PicturesOver    =   0   'False
  292.       FillStyle       =   0
  293.       RightToLeft     =   0   'False
  294.       PictureType     =   0
  295.       TabBehavior     =   0
  296.       OwnerDraw       =   0
  297.       Editable        =   0   'False
  298.       ShowComboButton =   -1  'True
  299.       WordWrap        =   0   'False
  300.       TextStyle       =   0
  301.       TextStyleFixed  =   0
  302.       OleDragMode     =   0
  303.       OleDropMode     =   0
  304.       DataMode        =   0
  305.       VirtualData     =   -1  'True
  306.    End
  307.    Begin MSComctlLib.Toolbar SzToolbar 
  308.       Align           =   1  'Align Top
  309.       Height          =   570
  310.       Left            =   0
  311.       TabIndex        =   9
  312.       Top             =   0
  313.       Width           =   9240
  314.       _ExtentX        =   16298
  315.       _ExtentY        =   1005
  316.       ButtonWidth     =   820
  317.       ButtonHeight    =   953
  318.       AllowCustomize  =   0   'False
  319.       Appearance      =   1
  320.       Style           =   1
  321.       ImageList       =   "ImageList1"
  322.       _Version        =   393216
  323.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  324.          NumButtons      =   9
  325.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  326.             Caption         =   "设置"
  327.             Key             =   "ymsz"
  328.             ImageKey        =   "sz"
  329.             BeginProperty ButtonMenus {66833FEC-8583-11D1-B16A-00C0F0283628} 
  330.                NumButtonMenus  =   1
  331.                BeginProperty ButtonMenu1 {66833FEE-8583-11D1-B16A-00C0F0283628} 
  332.                EndProperty
  333.             EndProperty
  334.          EndProperty
  335.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  336.             Caption         =   "打印"
  337.             Key             =   "dy"
  338.             ImageKey        =   "dy"
  339.          EndProperty
  340.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  341.             Caption         =   "预览"
  342.             Key             =   "yl"
  343.             ImageKey        =   "yl"
  344.          EndProperty
  345.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  346.             Style           =   3
  347.          EndProperty
  348.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  349.             Caption         =   "定义"
  350.             Key             =   "define"
  351.             ImageKey        =   "define"
  352.          EndProperty
  353.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  354.             Caption         =   "结转"
  355.             Key             =   "run"
  356.             ImageKey        =   "exec"
  357.          EndProperty
  358.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  359.             Style           =   3
  360.          EndProperty
  361.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  362.             Caption         =   "帮助"
  363.             Key             =   "bz"
  364.             ImageKey        =   "bz"
  365.          EndProperty
  366.          BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  367.             Caption         =   "退出"
  368.             Key             =   "fh"
  369.             ImageKey        =   "tc"
  370.          EndProperty
  371.       EndProperty
  372.       BorderStyle     =   1
  373.       Begin MSComctlLib.Toolbar GsToolbar 
  374.          Height          =   540
  375.          Left            =   6630
  376.          TabIndex        =   10
  377.          Top             =   0
  378.          Width           =   2595
  379.          _ExtentX        =   4577
  380.          _ExtentY        =   953
  381.          ButtonWidth     =   1455
  382.          ButtonHeight    =   953
  383.          AllowCustomize  =   0   'False
  384.          Appearance      =   1
  385.          Style           =   1
  386.          ImageList       =   "ImageList1"
  387.          _Version        =   393216
  388.          BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  389.             NumButtons      =   3
  390.             BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  391.                Caption         =   "保存格式"
  392.                Key             =   "bcgs"
  393.                ImageKey        =   "bcgs"
  394.             EndProperty
  395.             BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  396.                Caption         =   "默认列宽"
  397.                Key             =   "hfmrgs"
  398.                ImageKey        =   "mrlk"
  399.             EndProperty
  400.             BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  401.                Caption         =   "显示项目"
  402.                Key             =   "szxsxm"
  403.                ImageKey        =   "xsxm"
  404.             EndProperty
  405.          EndProperty
  406.       End
  407.    End
  408. End
  409. Attribute VB_Name = "JZ_FrmTranList"
  410. Attribute VB_GlobalNameSpace = False
  411. Attribute VB_Creatable = False
  412. Attribute VB_PredeclaredId = True
  413. Attribute VB_Exposed = False
  414. '*******************************************************
  415. '*    模 块 名 称 :自动转帐列表
  416. '*    功 能 描 述 :所有通过定义转帐关系能进行自动转帐的目录清单及执行转帐过程
  417. '*    程序员姓名  : 姜冬梅
  418. '*    最后修改人  : 魏永生
  419. '*    最早完成时间:2001/04/30
  420. '*    最近修改时间:2001/11/29
  421. '*    备        注:经过自己测试
  422. '*******************************************************
  423. '修改]
  424. Dim Rec_AutoTranMain As New ADODB.Recordset            '转帐过程主表中
  425. Dim Rec_AutoTranItem As New ADODB.Recordset            '转帐过程辅表
  426. Dim RecTemp As New ADODB.Recordset                     '临时数据表
  427. Dim SqlStr As String                                   '查询字符串
  428. Dim Jsqte As Long                                      '临时计数器
  429. '
  430. Dim Je As Double                                       '取金额
  431. Dim Jhj As Double                                      '借合计金额
  432. Dim Dhj As Double                                      '贷合计金额
  433. Dim Sl As Double                                       '取数量
  434. Dim Jhjsl As Double                                    '借合计数量
  435. Dim Dhjsl As Double                                    '贷合计数量
  436. Dim ItemSl As Double                                   '取数量
  437. Dim JhjItemSl As Double                                '借合计数量
  438. Dim DhjItemSl As Double                                '贷合计数量
  439. Dim OperationNum    As Integer                          '本次转帐操作批号
  440. Dim Jsq_Eff  As Integer                                 '本批有效转帐过程总数
  441. Dim TranJsq As Integer                                  '本批选择的转帐过程个数计数器
  442. Dim TranNum() As String                                 '转帐过程数组
  443. Dim TranVouchClass() As String                          '转帐凭证类别数组
  444. Dim Bln_DeleteFlag As Boolean                           '转帐后是否删除临时表
  445. Dim Int_Year As Integer                                 '会计年份
  446. Dim Int_Period As Integer                               '会计期间
  447. Dim jdzygs As Integer                       '控件焦点转移个数
  448. Dim Lrzt As Integer                         '录入状态标志(0-非录入状态 1-增加 2-修改)
  449. Dim ReportTitle As String                   '报表主标题
  450. Public TranClassCode As String              '转帐类型编码
  451.   
  452. '以下为固定使用变量(网格)
  453. Dim Cxnrrec As New ADODB.Recordset       '显示查询内容动态集
  454. Dim Dyymctbl As New DY_Dyymsz            '打印页面窗体变量
  455. Dim GridCode As String                   '显示网格网格代码
  456. Dim GridInf() As Variant                 '整个网格设置信息
  457. Dim Tsxx As String                       '系统提示信息
  458. Dim Qslz As Long                         '网格隐藏(非操作显示)列数
  459. Dim Sjhgd As Double                      '网格数据行高度
  460. Dim GridBoolean() As Boolean             '网格列信息(布尔型)
  461. Dim GridStr()  As String                 '网格列信息(字符型)
  462. Dim GridInt() As Integer                 '网格列信息(整型)
  463. Dim Szzls As Integer                     '数组总列数(网格列数-1)
  464. '以下为固定使用变量(文本框)
  465. Dim Textvar() As Variant                 '存储变体型文本框信息
  466. Dim Textboolean() As Boolean             '存储布尔型文本框信息
  467. Dim Textint() As Integer                 '存储整型文本框信息
  468. Dim Textstr() As String                  '存储字符型文本框信息
  469. Dim Max_Text_Index As Integer            '最大录入文本框索引值
  470. Dim TextGroupCode As String              '文本框录入分组编码
  471. Dim TextValiLock As Boolean              '文本框失去焦点是否进行有效性控制判断
  472. Dim TextValiJudgeLock() As Boolean       '文本框录入有效性判断控制锁,=True时光标离开不需要马上进行判断
  473. Private Sub Form_KeyPress(KeyAscii As Integer)   '控 制 焦 点 转 移
  474.     
  475.     jdzygs = 6
  476.     Select Case KeyAscii
  477.     Case vbKeyReturn
  478.         If Kjjdzy(jdzygs) Then
  479.             KeyAscii = 0
  480.         End If
  481.     Case 39           '屏蔽"'"
  482.         KeyAscii = 0
  483.     End Select
  484.     
  485. End Sub
  486. Private Sub Form_Load()
  487.     
  488.     '报表主标题及报表编码
  489.     ReportTitle = "结转生产成本"
  490.     XtReportCode = "CB_CostCarryForward"
  491.     Load Dyymctbl
  492.     
  493.     '调入网格
  494.     GridCode = "CB_CostCarryForward"          '网格属性编码
  495.     Call BzWgcsh(CzxsGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
  496.     Qslz = GridInf(1)
  497.     Sjhgd = GridInf(2)
  498.     Szzls = CzxsGrid.Cols - 1
  499.     
  500.     '填 充 网 格
  501.     Call Cxnrtcwg
  502.     
  503.     '[自定义
  504.     '填充会计期间列表框(年度默认为用户选择年度)
  505.     Call Sub_FillPeriod(Combo_KJQJ, Xtyear, Xtmm)
  506.     '自定义]
  507.     
  508. End Sub
  509. Private Sub Cxnrtcwg()                               '查询内容填充网格
  510.     
  511.     SqlStr = "Select A.Objectcode,ObjectName,UnitName,Quantity,ThmonCost,TranEngSign From Cb_ObjectComplete A " _
  512.                 & "Left Outer Join (Select ObjectCode,ObjectName,UnitName From Cb_CostObject A " _
  513.                 & "Left Outer Join Gy_UnitSet B On A.MeasureUnitCode=B.UnitCode) B On A.ObjectCode=B.ObjectCode"
  514.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  515.     With RecTemp
  516.         CzxsGrid.Clear 1
  517.         CzxsGrid.Rows = .RecordCount + CzxsGrid.FixedRows
  518.         If .EOF And .BOF Then
  519.             Exit Sub
  520.         End If
  521.         Jsqte = CzxsGrid.FixedRows
  522.         Do While Not .EOF
  523.             If Jsqte >= CzxsGrid.Rows Then
  524.                 CzxsGrid.AddItem ""
  525.             End If
  526.             Call Jltcwg(RecTemp, Jsqte)
  527.             CzxsGrid.RowHeight(Jsqte) = Sjhgd
  528.             .MoveNext
  529.             Jsqte = Jsqte + 1
  530.         Loop
  531.     End With
  532.     
  533. End Sub
  534. Private Sub Jltcwg(Jlbrec As ADODB.Recordset, Rowjsq As Long)                                     '记录内容填充网格
  535.     
  536.     With Jlbrec
  537.         CzxsGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)) = Trim(.Fields("Objectcode"))
  538.         CzxsGrid.TextMatrix(Rowjsq, Sydz("003", GridStr(), Szzls)) = Trim(.Fields("ObjectName"))
  539.         CzxsGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)) = Trim(.Fields("UnitName") & "")
  540.         CzxsGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)) = Trim(.Fields("Quantity") & "")
  541.         CzxsGrid.TextMatrix(Rowjsq, Sydz("006", GridStr(), Szzls)) = Trim(.Fields("ThmonCost") & "")
  542.         CzxsGrid.TextMatrix(Rowjsq, Sydz("007", GridStr(), Szzls)) = Trim(.Fields("Auditing") & "")
  543.     End With
  544.     
  545. End Sub
  546. Private Sub Wbkcsh()                          '录入文本框初始化
  547.     
  548.     Dim Jsqte As Integer
  549.     '最大录入文本框索引值
  550.     Max_Text_Index = Textvar(1)
  551.     ReDim TextValiJudgeLock(Max_Text_Index)
  552.     For Jsqte = 0 To Max_Text_Index
  553.         If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then   '如果文本框索引值不为0,即不是“编码”文本框
  554.             If Textboolean(Jsqte, 1) Then   '如果该文本框处需要提供帮助
  555.                 If Jsqte <> 0 And Not Textboolean(Jsqte, 3) Then    '
  556.                     Load Ydcommand1(Jsqte)
  557.                 End If
  558.                 Ydcommand1(Jsqte).Visible = True
  559.                 Ydcommand1(Jsqte).Move LrText(Jsqte).Left + LrText(Jsqte).Width, LrText(Jsqte).Top
  560.             End If
  561.             TextChangeLock = True
  562.             LrText(Jsqte).Text = ""
  563.             LrText(Jsqte).Tag = ""
  564.             If Textint(Jsqte, 5) <> 0 Then   '如果字段录入长度不等于0
  565.                 LrText(Jsqte).MaxLength = Textint(Jsqte, 5)  '该文本框的最大录入长度赋值给文本框的MaxLength
  566.             End If
  567.             TextChangeLock = False
  568.         End If
  569.         TextValiJudgeLock(Jsqte) = True
  570.     Next Jsqte
  571.     
  572. End Sub
  573. Private Sub Form_Unload(Cancel As Integer)             '窗体卸载
  574.     
  575.     TranClassCode = ""
  576.     Set Cxnrrec = Nothing
  577.     Unload Dyymctbl
  578.     Set Rec_AutoTranMain = Nothing
  579.     Set Rec_AutoTranItem = Nothing
  580.     Set RecTemp = Nothing
  581.     
  582. End Sub
  583. Private Function Bclrsj() As Boolean                   '判断录入数据有效性,并保存数据
  584.     
  585.     Dim Jsqte As Integer
  586.     For Jsqte = 0 To Max_Text_Index
  587.         If Textint(Jsqte, 8) = 1 Then     '如果字段不能为空
  588.             If Len(Trim(LrText(Jsqte).Text)) = 0 Then
  589.                 Tsxx = Textstr(Jsqte, 7) & "不能为空!"
  590.                 Call Xtxxts(Tsxx, 0, 1)
  591.                 LrText(Jsqte).SetFocus
  592.                 Bclrsj = False
  593.                 Exit Function
  594.             End If
  595.         Else
  596.             If Textint(Jsqte, 8) = 2 Then   '如果字段不能为零
  597.                 If Val(Trim(LrText(Jsqte).Text)) = 0 Then
  598.                     Tsxx = Textstr(Jsqte, 7) & "不能为零!"
  599.                     Call Xtxxts(Tsxx, 0, 1)
  600.                     LrText(Jsqte).SetFocus
  601.                     Bclrsj = False
  602.                     Exit Function
  603.                 End If
  604.             End If
  605.         End If
  606.     Next Jsqte
  607.     
  608.     If ImgCmbClass.Text = "" Then
  609.         Tsxx = tsLabel(2).Caption & "不能为空!"
  610.         Call Xtxxts(Tsxx, 0, 1)
  611.         ImgCmbClass.SetFocus
  612.         Bclrsj = False
  613.         Exit Function
  614.     Else
  615.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * from Cwzz_VouchClass Where VouchClassCode='" & Trim(GetComboKey(ImgCmbClass, 0)) & "'")
  616.     End If
  617.     
  618.     '对需要进行事后判断的文本框录入内容进行有效性判断 (固定不变)
  619.     For Jsqte = 0 To Max_Text_Index
  620.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then   '需要进行有效性判断的字段存盘之前再进行判断。
  621.             If Not TextYxxpd(Jsqte) Then
  622.                 Exit Function
  623.             End If
  624.         End If
  625.     Next Jsqte
  626.     
  627.     On Error GoTo Swcwcl
  628.     If Lrzt = 1 Then  '增 加一个新编码时
  629.         With Rec_AutoTranMain
  630.             If .State = 1 Then .Close
  631.             .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranCode= '" + Trim(LrText(0).Text) + "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  632.             If Not .EOF Then
  633.                 Tsxx = "转帐编码重复!"
  634.                 Call Xtxxts(Tsxx, 0, 1)
  635.                 LrText(0).SetFocus
  636.                 Bclrsj = False
  637.                 Exit Function
  638.             End If
  639.             If .State = 1 Then .Close
  640.             .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranName= '" + Trim(LrText(1).Text) + "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  641.             If Not .EOF Then
  642.                 Tsxx = "转帐名称重复!"
  643.                 Call Xtxxts(Tsxx, 0, 1)
  644.                 LrText(1).SetFocus
  645.                 Bclrsj = False
  646.                 Exit Function
  647.             End If
  648.             .AddNew
  649.             .Fields("TranClass") = TranClassCode
  650.             .Fields("TranCode") = Trim(LrText(0).Text)
  651.             .Fields("TranName") = Trim(LrText(1).Text)
  652.             .Fields("VouchClassCode") = Trim(GetComboKey(ImgCmbClass, 0))
  653.             .Update
  654.         End With
  655.         SqlStr = "SELECT cwzz_VouchClass.VouchClassCode,cwzz_VouchClass.VouchClassName, Cwzz_AutoTranMain.TranName, " & _
  656.         "Cwzz_AutoTranMain.TranCode, Cwzz_AutoTranMain.VouchClassCode," & _
  657.         "Cwzz_AutoTranMain.EndTranDate , Cwzz_AutoTranMain.Bill FROM Cwzz_AutoTranMain LEFT OUTER JOIN " & _
  658.         "Cwzz_VouchClass ON " & _
  659.         "Cwzz_AutoTranMain.VouchClassCode = Cwzz_VouchClass.VouchClassCode WHERE trancode = '" & Trim(LrText(0)) & "' and TranClass='" & TranClassCode & "'" & _
  660.         "ORDER BY Cwzz_AutoTranMain.TranCode"
  661.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  662.         With CzxsGrid
  663.             .AddItem ""
  664.             .RowHeight(.Rows - 1) = Sjhgd
  665.             .Select .Rows - 1, Qslz
  666.             Call Jltcwg(RecTemp, .Rows - 1)
  667.         End With
  668.         
  669.         Tsxx = "保存成功!"
  670.         Call Xtxxts(Tsxx, 0, 4)
  671.         Call Cshlrxx(1)
  672.         LrText(0).SetFocus
  673.     Else  '修改转帐名称或转帐类型时 修改编辑状态
  674.         With Rec_AutoTranMain
  675.             If .State = 1 Then .Close
  676.             .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranName= '" + Trim(LrText(1).Text) + "' and TranCode<>'" & Trim(LrText(0).Text) & "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  677.             If Not .EOF Then
  678.                 Tsxx = "转帐名称重复!"
  679.                 Call Xtxxts(Tsxx, 0, 1)
  680.                 LrText(1).SetFocus
  681.                 Bclrsj = False
  682.                 Exit Function
  683.             End If
  684.             If .State = 1 Then .Close
  685.             .Open "SELECT * FROM Cwzz_AutoTranMain WHERE TranCode= '" + LrText(0).Text + "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  686.             If Not .EOF Then
  687.                 .Fields("TranName") = Trim(LrText(1).Text)
  688.                 .Fields("VouchClassCode") = Trim(GetComboKey(ImgCmbClass, 0))
  689.             End If
  690.             .Update
  691.             .Close
  692.         End With
  693.         SqlStr = "SELECT Cwzz_VouchClass.VouchClassName, Cwzz_AutoTranMain.TranName," & _
  694.         "Cwzz_AutoTranMain.TranCode,Cwzz_AutoTranMain.VouchClassCode, Cwzz_AutoTranMain.EndTranDate," & _
  695.         "Cwzz_AutoTranMain.Bill    FROM Cwzz_AutoTranMain LEFT OUTER JOIN " & _
  696.         "Cwzz_VouchClass ON  Cwzz_AutoTranMain.VouchClassCode = Cwzz_VouchClass.VouchClassCode  WHERE trancode = '" & Trim(LrText(0)) & "' and TranClass='" & TranClassCode & "'"
  697.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  698.         If Not RecTemp.EOF Then
  699.             Call Jltcwg(RecTemp, CzxsGrid.Row)
  700.         End If
  701.     End If
  702.     Bclrsj = True
  703.     Exit Function
  704.     
  705. Swcwcl:
  706.     Tsxx = "存盘过程中出现错误,请退出后重新进入!"
  707.     Call Xtxxts(Tsxx, 0, 1)
  708.     Exit Function
  709.     
  710. End Function
  711. Private Sub Cshlrxx(lrztxx As Integer)              '初始化录入字段信息
  712.     
  713.     TextChangeLock = True       '关闭Chang事件
  714.     If lrztxx = 1 Then              '新增状态
  715.         For Jsqte = 0 To Max_Text_Index
  716.             If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then  '文本框索引值
  717.                 TextChangeLock = True
  718.                 LrText(Jsqte).Text = ""
  719.                 LrText(Jsqte).Tag = ""
  720.                 TextChangeLock = False
  721.             End If
  722.             TextValiJudgeLock(Jsqte) = True
  723.         Next Jsqte
  724.         ImgCmbClass.Text = ""
  725.     Else                            '其他状态,修改、非编辑
  726.         With CzxsGrid
  727.             LrText(0).Text = Trim(.TextMatrix(.Row, Sydz("001", GridStr(), Szzls)))
  728.             LrText(1).Text = Trim(.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)))
  729.             ImgCmbClass.Text = Trim(.TextMatrix(.Row, Sydz("003", GridStr(), Szzls)))
  730.         End With
  731.     End If
  732.     TextChangeLock = False
  733.     
  734. End Sub
  735. Private Sub Scdqjl()                 '删 除 当 前 记 录
  736.     
  737.     Dim yhAnswer As Integer
  738.     If CzxsGrid.Row < CzxsGrid.FixedRows Then
  739.         Exit Sub
  740.     End If
  741.     Tsxx = "请确认是否删除当前记录?"
  742.     yhAnswer = Xtxxts(Tsxx, 2, 2)
  743.     If yhAnswer = 2 Then
  744.         Exit Sub
  745.     End If
  746.     On Error GoTo Cwcl
  747.     
  748.     Cw_DataEnvi.DataConnect.BeginTrans
  749.     Cw_DataEnvi.DataConnect.Execute "delete Cwzz_AutoTranItem where TranCode= '" + Trim(CzxsGrid.TextMatrix(CzxsGrid.Row, Sydz("001", GridStr(), Szzls))) + "' and TranClass='" & TranClassCode & "'"
  750.     Cw_DataEnvi.DataConnect.Execute "delete Cwzz_AutoTranMain where TranCode = '" + Trim(CzxsGrid.TextMatrix(CzxsGrid.Row, Sydz("001", GridStr(), Szzls))) + "' and TranClass='" & TranClassCode & "'"
  751.     Cw_DataEnvi.DataConnect.CommitTrans
  752.     
  753.     CzxsGrid.RemoveItem CzxsGrid.Row
  754.     Exit Sub
  755.     
  756. Cwcl:
  757.     If Err.Number = -2147217900 Then
  758.         Tsxx = "该编码已经被使用,不能删除!"
  759.         Call Xtxxts(Tsxx, 0, 1)
  760.         Exit Sub
  761.     Else
  762.         Tsxx = "出现未知情况,该编码不能被删除!"
  763.         Call Xtxxts(Tsxx, 0, 1)
  764.         Exit Sub
  765.     End If
  766.     
  767. End Sub
  768. '******************以下为基本处理程序(固定不变)************************'
  769. Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)        '支持热键操作
  770.     If Shift = 2 Then
  771.         Select Case UCase(Chr(KeyCode))
  772.         Case "P"                   'Ctrl+P 打印
  773.             Call bbyl(False)
  774.         Case "I"                   'Ctrl+I 增加
  775.             Call Toolbjzt
  776.             Lrzt = 1
  777.             Call Cshlrxx(Lrzt)
  778.             LrText(0).SetFocus
  779.             LrText(0).Locked = False
  780.         Case "D"                   'Ctrl+D 删除
  781.             Call Scdqjl
  782.         End Select
  783.     End If
  784. End Sub
  785. Private Sub SzToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
  786.     Select Case Button.Key
  787.     Case "ymsz"                                          '页面设置
  788.         Dyymctbl.Show 1
  789.     Case "yl"                                            '预 览
  790.         Call bbyl(True)
  791.     Case "dy"                                            '打 印
  792.         Call bbyl(False)
  793.     Case "zj"                                            '增 加
  794.         Call Toolbjzt
  795.         Lrzt = 1
  796.         Call Cshlrxx(Lrzt)
  797.         LrText(0).SetFocus
  798.         LrText(0).Locked = False
  799.     Case "xg"                                            '修 改
  800.         Call Xgdqjl
  801.     Case "sc"                                            '删 除
  802.         Call Scdqjl
  803.     Case "fq"                                            '取 消
  804.         Call Toolfbjzt
  805.     Case "sx"                                            '刷 新
  806.         Call Cxnrtcwg
  807.     Case "bz"                                            '帮 助
  808.         Call F1bz
  809.     Case "fh"                                            '退 出
  810.         Unload Me
  811.         '[自定义
  812.     Case "run"
  813.         '[>>计算会计期间
  814.         Int_Year = Val(Mid(Combo_KJQJ.Text, 1, 4))
  815.         Int_Period = Val(Mid(Combo_KJQJ.Text, 6, 2))
  816.         '<<]
  817.         Select Case TranClassCode
  818.         Case "01"                           '执行自定义转帐凭证
  819.             Call Run1
  820.         Case "04"                           '执行期间损益
  821.             Call Run4
  822.         Case "05"                           '模式转帐凭证
  823.             Call Run5
  824.         Case "03"                           '汇兑损益凭证
  825.             Call Run3
  826.         End Select
  827.     Case "define"                                '定义转帐凭证
  828.         Call Define
  829.         '自定义]
  830.     End Select
  831. End Sub
  832. Private Sub CzxsGrid_DblClick()                            '修改当前编码记录
  833.     With CzxsGrid
  834.         If .Row < .FixedRows Then
  835.             Exit Sub
  836.         End If
  837.         If GridStr(.Col, 1) <> "006" Then
  838.             Call Xgdqjl
  839.         Else
  840.             If .TextMatrix(.Row, Sydz("006", GridStr(), Szzls)) = "√" Then
  841.                 .TextMatrix(.Row, Sydz("006", GridStr(), Szzls)) = ""
  842.             Else
  843.                 .TextMatrix(.Row, Sydz("006", GridStr(), Szzls)) = "√"
  844.             End If
  845.         End If
  846.     End With
  847. End Sub
  848. Private Sub Xgdqjl()                                       '修改当前编码记录
  849.     If CzxsGrid.Row < CzxsGrid.FixedRows Then
  850.         Exit Sub
  851.     End If
  852.     Call Toolbjzt
  853.     Lrzt = 2
  854.     Call Cshlrxx(Lrzt)
  855.     LrText(1).SetFocus
  856.     LrText(0).Locked = True
  857. End Sub
  858. Private Sub Toolbjzt()                                     'Toolbar状态(编辑状态)
  859.     StTab.TabEnabled(1) = True
  860.     StTab.Tab = 1
  861.     Frame1.Enabled = True
  862.     StTab.TabEnabled(0) = False
  863.     CzxsGrid.Enabled = False
  864.     With SzToolbar
  865.         .Buttons("ymsz").Enabled = False
  866.         .Buttons("dy").Enabled = False
  867.         .Buttons("yl").Enabled = False
  868.         .Buttons("zj").Enabled = False
  869.         .Buttons("xg").Enabled = False
  870.         .Buttons("sc").Enabled = False
  871.         '[自定义
  872.         .Buttons("define").Enabled = False
  873.         .Buttons("run").Enabled = False
  874.         '自定义]
  875.     End With
  876.     '[自定义
  877.     With GsToolbar
  878.         .Buttons("bcgs").Enabled = False
  879.         .Buttons("hfmrgs").Enabled = False
  880.         .Buttons("szxsxm").Enabled = False
  881.     End With
  882.     '自定义]
  883. End Sub
  884. Private Sub Toolfbjzt()                                    'Toolbar状态(非编辑状态)
  885.     StTab.TabEnabled(0) = True
  886.     StTab.Tab = 0
  887.     CzxsGrid.Enabled = True
  888.     Frame1.Enabled = False
  889.     StTab.TabEnabled(1) = False
  890.     Lrzt = 0
  891.     With SzToolbar
  892.         .Buttons("ymsz").Enabled = True
  893.         .Buttons("dy").Enabled = True
  894.         .Buttons("yl").Enabled = True
  895.         .Buttons("zj").Enabled = True
  896.         .Buttons("xg").Enabled = True
  897.         .Buttons("sc").Enabled = True
  898.         '[自定义
  899.         .Buttons("define").Enabled = True
  900.         .Buttons("run").Enabled = True
  901.         '自定义]
  902.     End With
  903.     '[自定义
  904.     With GsToolbar
  905.         .Buttons("bcgs").Enabled = True
  906.         .Buttons("hfmrgs").Enabled = True
  907.         .Buttons("szxsxm").Enabled = True
  908.     End With
  909.     '自定义]
  910. End Sub
  911. Private Sub BcCommand_Click()                                           '保 存
  912.     If Not Bclrsj Then
  913.         Exit Sub
  914.     End If
  915.     If Lrzt = 2 Then   '修改编辑状态
  916.         Call Toolfbjzt
  917.     End If
  918. End Sub
  919. Private Sub QxCommand_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)       '取消
  920.     '避免执行Click程序
  921.     Bln_Cancel = True
  922.     Call Cancel
  923. End Sub
  924. Private Sub QxCommand_Click()                                                                         '取消
  925.     If Bln_Cancel Then
  926.         Bln_Cancel = False
  927.         Exit Sub
  928.     End If
  929.     Call Cancel
  930. End Sub
  931. Private Sub Cancel()                                                                                  '取消
  932.     '文本框加锁
  933.     For Jsqte = 0 To Max_Text_Index
  934.         TextValiJudgeLock(Jsqte) = True  '光标离开不必进行有效性判断
  935.     Next Jsqte
  936.     Call Toolfbjzt
  937. End Sub
  938. Private Sub GsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)   '表格格式设置(通用)
  939.     Select Case Button.Key
  940.     Case "bcgs"                              '保存表格格式
  941.         Call Bcwggs(CzxsGrid, GridCode, GridStr())
  942.     Case "hfmrgs"                            '恢复默认格式
  943.         Call Hfmrgs(CzxsGrid, GridCode, GridStr())
  944.     Case "szxsxm"                            '设置显示项目
  945.         Call Szxsxm(CzxsGrid, GridCode)
  946.     End Select
  947. End Sub
  948. Private Sub bbyl(bbylte As Boolean)                    '报表打印预览
  949.     Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
  950.     Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
  951.     Bbxbtgs = 1                                          '报 表 小 标 题 行 数
  952.     Bbbwhgs = 0                                          '报 表 表 尾 行 数
  953.     ReDim Bbxbt(1 To Bbxbtgs)
  954.     ReDim bbxbtzzxs(1 To Bbxbtgs)
  955.     If Bbbwhgs <> 0 Then
  956.         ReDim Bbbwh(1 To Bbbwhgs)
  957.         ReDim Bbbwhzzxs(1 To Bbbwhgs)
  958.     End If
  959.     Bbzbt = ReportTitle
  960.     Bbxbt(1) = " "
  961.     bbxbtzzxs(1) = 0                                     '报表行组织形式(0-居左 1-居中 2-居右)
  962.     Call Scyxsjb(CzxsGrid)                               '生成报表数据
  963.     Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
  964.     If Not bbylte Then
  965.         Unload DY_Tybbyldy
  966.     End If
  967. End Sub
  968. '************以下为文本框录入处理程序(固定不变部分)*************'
  969. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  970.     
  971.     '以下为依据实际情况自定义部分[
  972.     
  973.     '在此填写文本框录入事后处理程序
  974.     SendKeys "vbtab"
  975.     ']以上为依据实际情况自定义部分
  976. End Sub
  977. Private Sub LrText_Change(Index As Integer)
  978.     
  979.     '屏蔽程序改变控制
  980.     If TextChangeLock Then
  981.         Exit Sub
  982.     End If
  983.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  984.     '限制字段录入长度
  985.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  986.     Select Case Textint(Index, 1)  '文本框索引值
  987.     Case 8           '金额型
  988.         Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  989.     Case 9           '数量型
  990.         Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  991.     Case 10          '单价型
  992.         Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  993.     Case Else        '其他小数类型控制
  994.         If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then  '字段小数位个数、整数位个数。
  995.             Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  996.         End If
  997.     End Select
  998.     TextChangeLock = False '解锁
  999. End Sub
  1000. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  1001.     Call TextShow(Index)
  1002.     CurTextIndex = Index
  1003.     LrText(Index).SelStart = Len(LrText(Index))
  1004. End Sub
  1005. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  1006.     Select Case KeyCode
  1007.     Case vbKeyF2
  1008.         Call Text_Help(Index)
  1009.     End Select
  1010. End Sub
  1011. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  1012.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  1013. End Sub
  1014. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  1015.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  1016.         Call TextYxxpd(Index)
  1017.     End If
  1018. End Sub
  1019. Private Sub Ydcommand1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)     '按钮提供帮助
  1020.     Call Text_Help(Index)
  1021. End Sub
  1022. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  1023.     If Not Textboolean(Index, 1) Then
  1024.         Exit Sub
  1025.     End If
  1026.     TextValiJudgeLock(Index) = True   '按帮助按纽时,不进行有效性判断
  1027.     
  1028.     '先进行有效性判断
  1029.     If Not TextYxxpd(CurTextIndex) Then
  1030.         Exit Sub
  1031.     End If
  1032.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))  '帮助类型,帮助编码(HelpCode),文本框录入内容
  1033.     If Len(Xtfhcs) <> 0 Then
  1034.         If Textint(Index, 3) = 1 Then   '如果返回显示名称
  1035.             LrText(Index).Text = Xtfhcsfz
  1036.             LrText(Index).Tag = Xtfhcs
  1037.         Else                            '如果返回显示编码
  1038.             LrText(Index).Text = Xtfhcs
  1039.             LrText(Index).Tag = Xtfhcsfz
  1040.         End If
  1041.     End If
  1042.     TextValiJudgeLock(Index) = False
  1043.     LrText(Index).SetFocus
  1044. End Sub
  1045. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  1046.     
  1047.     '填写文本框得到焦点,进行相应信息处理程序
  1048.     '可以填写帮助按纽显示并调整位置。
  1049. End Sub
  1050. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断,数据的正确性
  1051.     '可以补充自定义限制
  1052.     If TextValiJudgeLock(Index) Then    '=True文本框内容不需进行有效性判断时,退出
  1053.         TextYxxpd = True
  1054.         Exit Function
  1055.     End If
  1056.     If Trim(LrText(Index)) = "" Then
  1057.         LrText(Index).Tag = ""
  1058.         Call Wbklrwbcl(Index)
  1059.         TextValiJudgeLock(Index) = True  '文本框内容不需进行有效性判断时,退出
  1060.         TextYxxpd = True
  1061.         Exit Function
  1062.     End If
  1063.     Select Case Textint(Index, 4)
  1064.     Case 1      '编码型
  1065.         SqlStr = Trim(Textstr(Index, 5)) '有效性判断依据有内容时
  1066.         SqlStr = Replace(SqlStr, "@", "'" + Trim(LrText(Index).Text) + "'")
  1067.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1068.         If RecTemp.EOF Then
  1069.             Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  1070.             LrText(Index).SetFocus
  1071.             Exit Function
  1072.         Else
  1073.             Select Case Textint(Index, 3) '显示编码还是显示名称
  1074.             Case 0 '显示编码
  1075.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1076.                     LrText(Index).Text = Trim(RecTemp.Fields(Trim(Textstr(Index, 2))))
  1077.                 End If
  1078.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1079.                     LrText(Index).Tag = Trim(RecTemp.Fields(Trim(Textstr(Index, 3))))
  1080.                 End If
  1081.             Case 1 '显示名称
  1082.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1083.                     LrText(Index).Text = Trim(RecTemp.Fields(Trim(Textstr(Index, 3))))
  1084.                 End If
  1085.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1086.                     LrText(Index).Tag = Trim(RecTemp.Fields(Trim(Textstr(Index, 2))))
  1087.                 End If
  1088.             End Select
  1089.         End If
  1090.     Case 2      '日期型
  1091.         If IsDate(LrText(Index).Text) Then
  1092.             LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  1093.         Else
  1094.             Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  1095.             Call Xtxxts(Tsxx, 0, 1)
  1096.             LrText(Index).SetFocus
  1097.             Exit Function
  1098.         End If
  1099.     Case 3      '其他类型
  1100.     End Select
  1101.     TextValiJudgeLock(Index) = True
  1102.     TextYxxpd = True
  1103. End Function
  1104. Public Sub Define()             '定义转帐关系
  1105.     
  1106.     Dim gnsybm As String      '功能索引编码
  1107.     Dim gnsymc As String      '功能索引名称
  1108.     If CzxsGrid.Rows = CzxsGrid.FixedRows Then
  1109.         Tsxx = "请首先新增转帐过程!"
  1110.         Call Xtxxts(Tsxx, 0, 4)
  1111.         Exit Sub
  1112.     End If
  1113.     If Trim(CzxsGrid.TextMatrix(CzxsGrid.Row, Sydz("001", GridStr(), Szzls))) = "" Then
  1114.         Tsxx = "请选择转帐过程!"
  1115.         Call Xtxxts(Tsxx, 0, 4)
  1116.         Exit Sub
  1117.     Else
  1118.         '为转帐定义窗体传递该转帐过程参数
  1119.         CzxsGrid.Tag = CzxsGrid.TextMatrix(CzxsGrid.Row, Sydz("001", GridStr(), Szzls))
  1120.         SqlStr = "Select * From Xt_xtgnb where gnmc='" & Xt_Control.tvTreeView.SelectedItem.Text & "'"
  1121.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1122.         gnsybm = Trim(RecTemp.Fields("gnsy") & "")
  1123.         gnsymc = Trim(RecTemp.Fields("gnmc") & "")
  1124.         Select Case gnsybm
  1125.         Case "Cwzz_UserDefineTran"                                 '"自定义转帐凭证"
  1126.             AutoTran_DefiMy.Show 1
  1127.         Case "Cwzz_ProfitTran"                                     '"期间损益结转"
  1128.             AutoTran_DefiSy.Show 1
  1129.         Case "Cwzz_ModelTran"                                      '"模式结转凭证"
  1130.             AutoTran_DefiCus.Show 1
  1131.         Case "Cwzz_ExchangeTran"                                   '"汇兑损益凭证"
  1132.             AutoTran_DefiExchange.Show 1
  1133.         End Select
  1134.     End If
  1135.     
  1136. End Sub
  1137. Private Sub Run1()                                          '执行自定义转帐程序
  1138.     
  1139.     Dim Tj_Main As String                                   '总帐取数公式
  1140.     Dim Tj_List As String                                   '明细帐取数公式
  1141.     Dim Tj_Ass As String                                    '辅助帐取数公式
  1142.     
  1143.     Dim jsq As Integer                                      '临时计数器
  1144.     Dim i As Integer
  1145.     Dim Str_Formula As String                               '公式串
  1146.     Dim DestTranOri As String                               '对方汇总数的借贷方向
  1147.     Dim lng_OperationNum As Long
  1148.     Bln_DeleteFlag = True
  1149.     
  1150.     If Tran_Pd = False Then
  1151.         Exit Sub
  1152.     End If
  1153.     
  1154.     On Error GoTo Err1
  1155.     Cw_DataEnvi.DataConnect.BeginTrans
  1156.     
  1157.     TranCount = TranJsq          '记录生成凭证的个数
  1158.     VoidStr = ""         '记录没有数值的空凭证序号
  1159.     
  1160.     '对转帐列表网格内选中的TranJsq个转帐过程依次生成凭证,写到临时凭证数据表中
  1161.     For jsq = 1 To TranJsq
  1162.         
  1163.         '写临时凭证主表
  1164.         lng_OperationNum = CreatBillID("0102")
  1165.         Call Save_TempPz_Main(TranVouchClass(jsq), TranNum(jsq), OperationNum, lng_OperationNum)
  1166.         
  1167.         '对方汇总数的借贷方向
  1168.         SqlStr = "Select ccode,TranOri,FormulaString from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaString like '%对方汇总数%' Order by AutoTranId"
  1169.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1170.         If Rec_AutoTranItem.EOF = False Then
  1171.             DestTranOri = Rec_AutoTranItem.Fields("tranori")
  1172.         End If
  1173.         
  1174.         Jhj = 0
  1175.         Dhj = 0   '对方汇总金额
  1176.         Jhjsl = 0
  1177.         Dhjsl = 0
  1178.         JhjItemSl = 0
  1179.         DhjItemSl = 0
  1180.         i = 0
  1181.         hjje = 0      '合计金额
  1182.         '按转帐定义关系,取每笔转帐数据,写入临时数据辅表中
  1183.         SqlStr = "select * from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaString not like '%对方汇总数%' ORDER BY AutoTranId"
  1184.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1185.         Do While Rec_AutoTranItem.EOF = False
  1186.             
  1187.             Str_Formula = Trim(Rec_AutoTranItem.Fields("FormulaString"))
  1188.             Str_Formula = Fn_Replace(Str_Formula, Chk_Vouch.Value)
  1189.             
  1190.             SqlStr = "select " & Str_Formula & " as ReturnValue"
  1191.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1192.             If RecTemp.EOF = False Then
  1193.                 Je = IIf(IsNull(RecTemp.Fields("ReturnValue")), 0, RecTemp.Fields("ReturnValue"))
  1194.                 If Rec_AutoTranItem.Fields("tranori") <> DestTranOri Then
  1195.                     Dhj = Dhj + Je * IIf(Rec_AutoTranItem.Fields("tranori") = DestTranOri, -1, 1)
  1196.                 End If
  1197.                 
  1198.                 '写临时凭证辅表
  1199.                 If Je <> 0 Then
  1200.                     Call Save_TempPz_Ass(lng_OperationNum, i, Trim(Rec_AutoTranItem.Fields("Digest")), Trim(Rec_AutoTranItem.Fields("Ccode")), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Trim(Rec_AutoTranItem.Fields("TranOri")))
  1201.                 End If
  1202.             End If
  1203.             Rec_AutoTranItem.MoveNext
  1204.             i = i + 1
  1205.             hjje = hjje + Je
  1206.         Loop
  1207.         
  1208.         '对方汇总
  1209.         SqlStr = "Select ccode,TranOri,FormulaString from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaString like '%对方汇总数%' Order by AutoTranId"
  1210.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1211.         If Rec_AutoTranItem.EOF = False Then
  1212.             DestTranOri = Rec_AutoTranItem.Fields("tranori")
  1213.         End If
  1214.         
  1215.         '找到数据来源为对方汇总数的转帐关系
  1216.         SqlStr = "select * from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaString like '%对方汇总数%' ORDER BY AutoTranId"
  1217.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1218.         Do While Rec_AutoTranItem.EOF = False
  1219.             
  1220.             Str_Formula = Trim(Rec_AutoTranItem.Fields("FormulaString"))
  1221.             Str_Formula = Replace(Str_Formula, "对方汇总数", Str(Dhj))
  1222.             
  1223.             SqlStr = "select " & Str_Formula & " as ReturnValue"
  1224.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1225.             If RecTemp.EOF = False Then
  1226.                 Je = RecTemp.Fields("ReturnValue")
  1227.             End If
  1228.             Call Save_TempPz_Ass(lng_OperationNum, i, Trim(Rec_AutoTranItem.Fields("Digest")), Trim(Rec_AutoTranItem.Fields("Ccode")), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Trim(Rec_AutoTranItem.Fields("TranOri")))
  1229.             Rec_AutoTranItem.MoveNext
  1230.             i = i + 1
  1231.         Loop
  1232.         
  1233.         If hjje = 0 Then              '合计金额
  1234.             '删除空凭证主从表
  1235.             SqlStr = "Delete From Cwzz_AccVouchSubTemp Where VouchId=" & lng_OperationNum
  1236.             Cw_DataEnvi.DataConnect.Execute SqlStr
  1237.             SqlStr = "Delete From Cwzz_AccVouchMainTemp Where VouchId=" & lng_OperationNum
  1238.             Cw_DataEnvi.DataConnect.Execute SqlStr
  1239.             VoidStr = VoidStr + Str(jsq) + " "
  1240.             TranCount = TranCount - 1
  1241.         End If
  1242.         
  1243.     Next jsq
  1244.     
  1245.     Cw_DataEnvi.DataConnect.CommitTrans
  1246.     
  1247.     '没有有效凭证生成,即金额、数量均为0
  1248.     If Len(VoidStr) <> 0 Then
  1249.         Tsxx = "第" & VoidStr & "张凭证没有发生额,不需要结转!"
  1250.         Call Xtxxts(Tsxx, 0, 4)
  1251.     End If
  1252.     
  1253.     If TranCount > 0 Then       '记录生成凭证的个数
  1254.         '记录此次转帐的批号,做为凭证窗体调用的参数
  1255.         AutoTran_PzFrm.Lab_OperNum.Caption = OperationNum
  1256.         
  1257.         '调入凭证制作窗体
  1258.         AutoTran_PzFrm.Show 1
  1259.         
  1260.         
  1261.         '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
  1262.         Call Write_Date
  1263.         Call Clean
  1264.     End If
  1265.     Call Cxnrtcwg
  1266.     Exit Sub
  1267. Err1:
  1268.     Cw_DataEnvi.DataConnect.RollbackTrans
  1269.     'Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
  1270.     Tsxx = Err.Description
  1271.     Call Xtxxts(Tsxx, 0, 1)
  1272.     Exit Sub
  1273.     
  1274. End Sub
  1275. Private Sub Run3()                                          '执行汇兑损益程序
  1276.     
  1277.     Dim Tj_Main As String                                   '总帐取数公式
  1278.     Dim Tj_List As String                                   '明细帐取数公式
  1279.     Dim Tj_Ass As String                                    '辅助帐取数公式
  1280.     
  1281.     Dim jsq As Integer                                      '临时计数器
  1282.     Dim i As Integer
  1283.     Dim Str_Formula As String                               '公式串
  1284.     Dim DestTranOri As String                               '对方汇总数的借贷方向
  1285.     Dim Str_ForeignCode As String                           '外币编码
  1286.     Dim Dec_AdjustRate As Double                            '汇率
  1287.     Dim lng_OperationNum As Long
  1288.     Bln_DeleteFlag = True
  1289.     
  1290.     If Tran_Pd = False Then
  1291.         Exit Sub
  1292.     End If
  1293.     
  1294.     On Error GoTo Err1
  1295.     Cw_DataEnvi.DataConnect.BeginTrans
  1296.     
  1297.     TranCount = TranJsq          '记录生成凭证的个数
  1298.     VoidStr = ""         '记录没有数值的空凭证序号
  1299.     
  1300.     '对转帐列表网格内选中的TranJsq个转帐过程依次生成凭证,写到临时凭证数据表中
  1301.     For jsq = 1 To TranJsq
  1302.         
  1303.         '写临时凭证主表
  1304.         
  1305.         lng_OperationNum = CreatBillID("0102")
  1306.         Call Save_TempPz_Main(TranVouchClass(jsq), TranNum(jsq), OperationNum, lng_OperationNum)
  1307.         
  1308.         '对方汇总数的借贷方向
  1309.         SqlStr = "Select ccode,TranOri from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=0 Order by AutoTranId"
  1310.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1311.         If Rec_AutoTranItem.EOF = False Then
  1312.             DestTranOri = Rec_AutoTranItem.Fields("tranori")
  1313.         End If
  1314.         
  1315.         Jhj = 0
  1316.         Dhj = 0   '对方汇总金额
  1317.         Jhjsl = 0
  1318.         Dhjsl = 0
  1319.         JhjItemSl = 0
  1320.         DhjItemSl = 0
  1321.         i = 0
  1322.         hjje = 0      '合计金额
  1323.         '按转帐定义关系,取每笔转帐数据,写入临时数据辅表中
  1324.         SqlStr = "select * from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=1 ORDER BY AutoTranId"
  1325.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1326.         Do While Rec_AutoTranItem.EOF = False
  1327.             
  1328.             Str_Formula = Trim(Rec_AutoTranItem.Fields("ccode"))
  1329.             Str_ForeignCode = Trim(Rec_AutoTranItem.Fields("ForeigncurrCode"))
  1330.             
  1331.             If RecTemp.State = 1 Then RecTemp.Close
  1332.             SqlStr = "select AdjustRate from Gy_ForeignCurrency where ForeignCurrCode='" & Str_ForeignCode & "'"
  1333.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1334.             If RecTemp.EOF = False Then
  1335.                 Dec_AdjustRate = RecTemp.Fields("AdjustRate")
  1336.             End If
  1337.             
  1338.             If RecTemp.State = 1 Then RecTemp.Close
  1339.             SqlStr = "select ccode,qmye,qmwb from Cwzz_AccSum where ccode='" & Str_Formula & "' and year=" & Xtyear & " and period=" & Xtmm
  1340.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1341.             If RecTemp.EOF = False Then
  1342.                 Je = RecTemp.Fields("qmwb") * Dec_AdjustRate - RecTemp.Fields("qmye")
  1343.                 Je = Je * IIf(Rec_AutoTranItem.Fields("tranori") = Rec_AutoTranItem.Fields("BalanceOri"), 1, -1)
  1344.                 Dhj = Dhj + Je * IIf(Rec_AutoTranItem.Fields("tranori") = DestTranOri, -1, 1)
  1345.                 
  1346.                 '写临时凭证辅表
  1347.                 If Je <> 0 Then
  1348.                     Call Save_TempPz_Ass(lng_OperationNum, i, Trim(Rec_AutoTranItem.Fields("Digest")), Trim(Rec_AutoTranItem.Fields("Ccode")), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Trim(Rec_AutoTranItem.Fields("TranOri")))
  1349.                 End If
  1350.             End If
  1351.             Rec_AutoTranItem.MoveNext
  1352.             i = i + 1
  1353.             hjje = hjje + Je
  1354.         Loop
  1355.         
  1356.         '对方汇总
  1357.         SqlStr = "Select ccode,TranOri from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=0 Order by AutoTranId"
  1358.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1359.         If Rec_AutoTranItem.EOF = False Then
  1360.             DestTranOri = Rec_AutoTranItem.Fields("tranori")
  1361.         End If
  1362.         
  1363.         '找到数据来源为对方汇总数的转帐关系
  1364.         SqlStr = "select * from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=0 ORDER BY AutoTranId"
  1365.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1366.         Do While Rec_AutoTranItem.EOF = False
  1367.             
  1368.             Je = Dhj
  1369.             Call Save_TempPz_Ass(lng_OperationNum, i, Trim(Rec_AutoTranItem.Fields("Digest")), Trim(Rec_AutoTranItem.Fields("Ccode")), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Trim(Rec_AutoTranItem.Fields("TranOri")))
  1370.             Rec_AutoTranItem.MoveNext
  1371.         Loop
  1372.         If Dhj = 0 Then
  1373.             '删除空凭证主从表
  1374.             Cw_DataEnvi.DataConnect.Execute "Delete From Cwzz_AccVouchSubTemp Where VouchId=lng_OperationNum"
  1375.             Cw_DataEnvi.DataConnect.Execute "Delete From Cwzz_AccVouchMainTemp Where VouchId=lng_OperationNum"
  1376.         End If
  1377.         
  1378.         If hjje = 0 Then              '合计金额
  1379.             '删除空凭证主从表
  1380.             SqlStr = "Delete From Cwzz_AccVouchSubTemp Where VouchId=" & lng_OperationNum
  1381.             Cw_DataEnvi.DataConnect.Execute SqlStr
  1382.             SqlStr = "Delete From Cwzz_AccVouchMainTemp Where VouchId=" & lng_OperationNum
  1383.             Cw_DataEnvi.DataConnect.Execute SqlStr
  1384.             VoidStr = VoidStr + Str(jsq) + " "
  1385.             TranCount = TranCount - 1
  1386.         End If
  1387.         
  1388.     Next jsq
  1389.     
  1390.     Cw_DataEnvi.DataConnect.CommitTrans
  1391.     
  1392.     '没有有效凭证生成,即金额、数量均为0
  1393.     If Len(VoidStr) <> 0 Then
  1394.         Tsxx = "第" & VoidStr & "张凭证没有发生额,不需要结转!"
  1395.         Call Xtxxts(Tsxx, 0, 4)
  1396.     End If
  1397.     
  1398.     If TranCount > 0 Then       '记录生成凭证的个数
  1399.         '记录此次转帐的批号,做为凭证窗体调用的参数
  1400.         AutoTran_PzFrm.Lab_OperNum.Caption = OperationNum
  1401.         
  1402.         '调入凭证制作窗体
  1403.         AutoTran_PzFrm.Show 1
  1404.         
  1405.         
  1406.         '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
  1407.         Call Write_Date
  1408.         Call Clean
  1409.     End If
  1410.     Call Cxnrtcwg
  1411.     Exit Sub
  1412.     
  1413. Err1:
  1414.     Cw_DataEnvi.DataConnect.RollbackTrans
  1415.     'Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
  1416.     Tsxx = Err.Description
  1417.     Call Xtxxts(Tsxx, 0, 1)
  1418.     Exit Sub
  1419.     
  1420. End Sub
  1421. Public Sub Balance(TjMain As String, TjList As String, TjAss As String) '期末余额子过程
  1422.     
  1423.     Je = 0
  1424.     Sl = 0
  1425.     ItemSl = 0
  1426.     
  1427.     '[从科目总帐或辅助帐取年初余额
  1428.     If TjAss = "" Then
  1429.         SqlStr = "select * from  Cwzz_AccSum  where " & TjMain & " and Year='" & Int_Year & "' and period='" & Xtmm & " '"                          '从科目总帐取月初余额"
  1430.     Else
  1431.         SqlStr = "select * from Cwzz_AccSumAssi  where " & TjMain & "and " & TjAss & " and Year='" & Int_Year & "'   and period='" & Xtmm & " '"    '从辅助总帐取年初余额
  1432.     End If
  1433.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1434.     
  1435.     '余额赋初值
  1436.     If RecTemp.EOF = False Then
  1437.         Je = Trim(RecTemp.Fields("qcye") & "") '改为本月期初余额(bsj 2001-10-16)
  1438.         Sl = Trim(RecTemp.Fields("qcsl") & "") '改为本月期初余额(bsj 2001-10-16)
  1439.         
  1440.         If TjAss <> "" Then
  1441.             ItemSl = Trim(RecTemp.Fields("YcItemsl") & "")
  1442.         End If
  1443.     End If
  1444.     '[从科目总帐或辅助帐取年初余额
  1445.     
  1446.     
  1447.     '[从凭证明细取累计借方贷方发生额计算期末余额
  1448.     SqlStr = "SELECT ccode,Debi_Je=Sum(Jfje),Debi_Sl=Sum(Jfsl),Debi_Itemsl=sum(Itemjfsl),Lender_Je=Sum(Dfje),Lender_Sl=Sum(dfsl)," & _
  1449.     "Lender_Itemsl=sum(ItemDfsl) FROM Cwzz_V_AccVouch "
  1450.     
  1451.     If TjAss = "" Then                                  '无辅助项目核算
  1452.         SqlStr = SqlStr + " where " & TjList & ""
  1453.     Else
  1454.         SqlStr = SqlStr + " Where " & TjList & " and " & TjAss & ""
  1455.     End If
  1456.     
  1457.     '若不包含未记帐凭证,再增加一个限制
  1458.     If Chk_Vouch.Value = 0 Then
  1459.         SqlStr = SqlStr & " and BookFlag='1' "
  1460.     End If
  1461.     
  1462.     SqlStr = SqlStr + " and Year='" & Int_Year & "'  and Period='" & Int_Period & "' group by ccode " '(取本月数 bsj 2001-10-16)
  1463.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1464.     
  1465.     '计算期末余额
  1466.     If RecTemp.EOF = False Then
  1467.         Do While RecTemp.EOF = False
  1468.             Je = Je + Val(RecTemp.Fields("Debi_je") & "") - Val(RecTemp.Fields("Lender_je") & "")
  1469.             Sl = Sl + Val(RecTemp.Fields("Debi_sl") & "") - Val(RecTemp.Fields("Lender_sl") & "")
  1470.             If TjAss <> "" Then
  1471.                 ItemSl = ItemSl + Val(RecTemp.Fields("Debi_Itemsl") & "") - Val(RecTemp.Fields("Lender_Itemsl") & "")
  1472.             End If
  1473.             RecTemp.MoveNext
  1474.         Loop
  1475.     End If
  1476.     ']从凭证明细取累计借方贷方发生额计算期末余额
  1477.     
  1478. End Sub
  1479. Public Sub Debi(TjList As String, TjAss As String)       ''从凭证明细帐求本期借方发生额
  1480.     'TjList为计算明细帐发生额的条件,TjAss 有辅助项目核算的条件
  1481.     Je = 0
  1482.     Sl = 0
  1483.     ItemSl = 0
  1484.     
  1485.     SqlStr = "SELECT Debi_Je=Sum(Jfje),Debi_Sl=Sum(Jfsl),Debi_Itemsl=sum(Itemjfsl) " & _
  1486.     "FROM Cwzz_V_AccVouch "
  1487.     If TjAss = "" Then
  1488.         SqlStr = SqlStr + "where " & TjList & " "
  1489.     Else
  1490.         SqlStr = SqlStr + "where " & TjList & " and " & TjAss & " "
  1491.     End If
  1492.     If Chk_Vouch.Value = 0 Then         '不包含未记帐凭证
  1493.         SqlStr = SqlStr & " and BookFlag='1'"
  1494.     End If
  1495.     SqlStr = SqlStr + " and Year='" & Int_Year & "'  and Period='" & Int_Period & "' Group by Ccode"
  1496.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1497.     If RecTemp.EOF = False Then
  1498.         Do While RecTemp.EOF = False
  1499.             Je = Je + Val(RecTemp.Fields("Debi_Je") & "")
  1500.             Sl = Sl + Val(RecTemp.Fields("Debi_Sl") & "")
  1501.             ItemSl = ItemSl + Val(RecTemp.Fields("Debi_ItemSl") & "")
  1502.             RecTemp.MoveNext
  1503.         Loop
  1504.     End If
  1505. End Sub
  1506. Public Sub Lender(TjList As String, TjAss As String)        ''从凭证明细帐求本期贷方发生额
  1507.     'TjList为计算明细帐发生额的条件,TjAss 有辅助项目核算的条件
  1508.     Je = 0
  1509.     Sl = 0
  1510.     ItemSl = 0
  1511.     
  1512.     SqlStr = "SELECT Lender_Je=Sum(Dfje),Lender_Sl=Sum(Dfsl),Lender_ItemSl=sum(ItemDfsl) " & _
  1513.     "FROM Cwzz_V_AccVouch "
  1514.     If TjAss = "" Then
  1515.         SqlStr = SqlStr + "where " & TjList & " "
  1516.     Else
  1517.         SqlStr = SqlStr + "where " & TjList & " and " & TjAss & " "
  1518.     End If
  1519.     If Chk_Vouch.Value = 0 Then         '不包含未记帐凭证
  1520.         SqlStr = SqlStr & " and BookFlag='1'"
  1521.     End If
  1522.     SqlStr = SqlStr + " and Year='" & Int_Year & "'  and Period='" & Int_Period & "' Group by Ccode"
  1523.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1524.     If RecTemp.EOF = False Then
  1525.         Do While RecTemp.EOF = False
  1526.             Je = Je + Val(RecTemp.Fields("Lender_Je") & "")
  1527.             Sl = Sl + Val(RecTemp.Fields("Lender_Sl") & "")
  1528.             ItemSl = ItemSl + Val(RecTemp.Fields("Lender_ItemSl") & "")
  1529.             RecTemp.MoveNext
  1530.         Loop
  1531.     End If
  1532. End Sub
  1533. Public Sub Balance_Sy(TjMain As String, TjList As String, TjAss As String) '期间损益结转,以明细帐为循环体求总帐中不符合条件的科目期末余额
  1534.     'TjMain为取年初余额的条件,TjList为计算明细帐发生额的条件,TjAss 有辅助项目核算的条件
  1535.     'Je表示期末余额,Sl表示期末余数量
  1536.     Je = 0
  1537.     Sl = 0
  1538.     ItemSl = 0
  1539.     
  1540.     '[从凭证明细取累计借方、贷方发生额等
  1541.     SqlStr = "SELECT ccode,Debi_Je=Sum(Jfje),Debi_Sl=Sum(Jfsl),Lender_Je=Sum(Dfje),Lender_Sl=Sum(dfsl) FROM Cwzz_V_AccVouch "
  1542.     
  1543.     If TjAss = "" Then         '无辅助项目核算时
  1544.         SqlStr = SqlStr + "Where " & TjList & " "
  1545.     Else
  1546.         SqlStr = SqlStr + "Where " & TjList & " and " & TjAss & " "
  1547.     End If
  1548.     
  1549.     '若不包含未记帐凭证,再增加一个限制
  1550.     If Chk_Vouch.Value = 0 Then
  1551.         SqlStr = SqlStr & " and BookFlag='1'"
  1552.     End If
  1553.     SqlStr = SqlStr + " and Year='" & Int_Year & "'  and Period<='" & Int_Period & "' group by ccode "
  1554.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1555.     
  1556.     '计算期末余额
  1557.     If RecTemp.EOF = False Then
  1558.         Je = Je + Val(RecTemp.Fields("Debi_je") & "") - Val(RecTemp.Fields("Lender_je") & "")
  1559.         Sl = Sl + Val(RecTemp.Fields("Debi_sl") & "") - Val(RecTemp.Fields("Lender_sl") & "")
  1560.     End If
  1561.     
  1562.     '再搜索总帐中是否存在该辅助条件的记录,若存在则不参与计算,因为在上面的明细帐汇总时已经计算过,需要剔除掉.
  1563.     If TjAss = "" Then
  1564.         SqlStr = "SELECT * from  Cwzz_AccSum  where " & TjMain & " and Year='" & Int_Year & "' and period=1 " '从科目总帐取年初余额"
  1565.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1566.     Else
  1567.         SqlStr = "select * from Cwzz_AccSumAssi  where " & TjMain & "and " & TjAss & " and Year='" & Int_Year & "' and period=1"    '从辅助总帐取年初余额
  1568.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1569.     End If
  1570.     If RecTemp.EOF = False Then
  1571.         Je = 0
  1572.         Sl = 0
  1573.     End If
  1574. End Sub
  1575. Private Sub Save_TempPz_Main(TranVouchClass1 As String, TranNo As String, OperationNum1 As Integer, VouchIdTemp_Id As Long) '将有效数据写入临时凭证主表。(先写辅表再写主表,为了防止在主表中写入没有发生额的空凭证记录)
  1576.     Dim Rec_VouchMainTemp As New ADODB.Recordset           '临时凭证主表记录集
  1577.     
  1578.     '打开临时凭证主表,用于存放有效凭证的凭证号等信息
  1579.     If Rec_VouchMainTemp.State = 1 Then Rec_VouchMainTemp.Close
  1580.     Rec_VouchMainTemp.Open "select * from Cwzz_AccVouchMainTemp Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1581.     With Rec_VouchMainTemp
  1582.         .AddNew
  1583.         .Fields("VouchId") = VouchIdTemp_Id              '转帐过程序号
  1584.         .Fields("Year") = Int_Year                           '取选中的年份
  1585.         .Fields("period") = Int_Period                       '取选中的会计期间
  1586.         .Fields("Ddate") = Xtrq                              '取系统日期
  1587.         .Fields("VouchClassCode") = TranVouchClass1          '所转转帐过程的凭证类别
  1588.         .Fields("Doc") = 0
  1589.         .Fields("Bill") = Xtczy
  1590.         .Fields("VouchSource") = "自动转帐"                  '凭证来源
  1591.         .Fields("OperationClass") = ""                       '业务类型
  1592.         .Fields("BillType") = ""
  1593.         .Fields("BillNo") = TranNo                           '存放转帐过程编码
  1594.         .Fields("OperationNo") = OperationNum1               '存放批号
  1595.         .Fields("DeleteFlag") = IIf(Bln_DeleteFlag, 1, 0)
  1596.         
  1597.         .Update
  1598.     End With
  1599. End Sub
  1600. Private Function Tran_Pd() As Boolean            '转帐之前的判断
  1601.     Dim jsq As Long             '临时计数器
  1602.     '提示已转过的凭证是否再转一次
  1603.     With CzxsGrid
  1604.         For jsq = .FixedRows To .Rows - 1
  1605.             If .TextMatrix(jsq, Sydz("006", GridStr(), Szzls)) = "√" Then
  1606.                 If .TextMatrix(jsq, Sydz("005", GridStr(), Szzls)) <> "" Then
  1607.                     Tsxx = "第" & CzxsGrid.TextMatrix(jsq, Sydz("001", GridStr(), Szzls)) & "号已转过凭证,再转一次吗?"
  1608.                     If Xtxxts(Tsxx, 1, 4) = 7 Then
  1609.                         .TextMatrix(jsq, Sydz("006", GridStr(), Szzls)) = ""
  1610.                     End If
  1611.                 End If
  1612.             End If
  1613.         Next jsq
  1614.     End With
  1615.     
  1616.     '判断选择的转帐过程共几个,保存在TranJsq中。将每个转帐过程编号赋值到TranNum()数组中,
  1617.     ReDim TranNum(1)                            '转帐过程数组附初值
  1618.     TranJsq = 0
  1619.     With CzxsGrid
  1620.         For jsq = .FixedRows To .Rows - 1
  1621.             If .TextMatrix(jsq, Sydz("006", GridStr(), Szzls)) = "√" Then
  1622.                 If TranJsq = 0 Then
  1623.                     TranNum(1) = .TextMatrix(jsq, Sydz("001", GridStr(), Szzls))
  1624.                 End If
  1625.                 If TranJsq > 0 Then
  1626.                     ReDim Preserve TranNum(UBound(TranNum) + 1)
  1627.                     TranNum(TranJsq + 1) = .TextMatrix(jsq, Sydz("001", GridStr(), Szzls))
  1628.                 End If
  1629.                 TranJsq = TranJsq + 1
  1630.             End If
  1631.         Next jsq
  1632.     End With
  1633.     If TranJsq = 0 Then
  1634.         Tsxx = "没有选择转帐过程!"
  1635.         Call Xtxxts(Tsxx, 0, 4)
  1636.         Tran_Pd = False
  1637.         Exit Function
  1638.     End If
  1639.     Jsq_Eff = TranJsq               '假设选择的转帐过程全部有效
  1640.     
  1641.     '将每个转帐过程的凭证类别放到数组TranVouchClass中
  1642.     ReDim TranVouchClass(1)
  1643.     For jsq = 1 To TranJsq
  1644.         SqlStr = "SELECT * FROM Cwzz_AutoTranMain where TranCode='" & TranNum(jsq) & "'and tranclass='" & TranClassCode & "'"
  1645.         Set Rec_AutoTranMain = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1646.         If jsq > 1 Then
  1647.             ReDim Preserve TranVouchClass(UBound(TranVouchClass) + 1)
  1648.         End If
  1649.         TranVouchClass(jsq) = Trim(Rec_AutoTranMain.Fields("VouchClassCode") & "")
  1650.     Next jsq
  1651.     
  1652.     '取操作批号OperationNum,需唯一。
  1653.     OperationNum = CreatBillID("0102")
  1654.     RecTemp.Close
  1655.     Tran_Pd = True
  1656. End Function
  1657. Private Sub Write_Date()    '写转帐日期
  1658.     Dim RecTran As ADODB.Recordset
  1659.     Set RecTran = Cw_DataEnvi.DataConnect.Execute("Select * from Cwzz_AccVouchMainTemp where OperationNo='" & OperationNum & "' and VouchNo is not null and VouchNo<>'' ")
  1660.     If RecTran.EOF = False Then
  1661.         Do While RecTran.EOF = False
  1662.             If RecTemp.State = 1 Then RecTemp.Close
  1663.             RecTemp.Open "select * from Cwzz_AutoTranMain where TranCode='" & Trim(RecTran.Fields("BillNo")) & "' and TranClass='" & TranClassCode & "'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1664.             RecTemp.Fields("EndTranDate") = Xtrq
  1665.             RecTemp.Fields("Bill") = Xtczy
  1666.             RecTemp.Update
  1667.             RecTemp.Close
  1668.             RecTran.MoveNext
  1669.         Loop
  1670.     End If
  1671. End Sub
  1672. Private Sub Clean()               '删除临时数据表数据
  1673.     If Bln_DeleteFlag = True Then
  1674.         If RecTemp.State = 1 Then RecTemp.Close
  1675.         '删除临时凭证主从表
  1676.         Cw_DataEnvi.DataConnect.Execute "Delete From Cwzz_AccVouchSubTemp Where VouchId in (select VouchId from Cwzz_AccVouchMainTemp where OperationNo='" & OperationNum & "')"
  1677.         Cw_DataEnvi.DataConnect.Execute "Delete From Cwzz_AccVouchMainTemp Where OperationNo='" & OperationNum & "'"
  1678.     End If
  1679. End Sub
  1680. Private Sub Run5()    '执行模式转帐程序
  1681.     
  1682.     Dim jsq As Integer                                      '临时计数器
  1683.     Dim serialno As Integer
  1684.     Dim lng_OperationNum As Long
  1685.     Bln_DeleteFlag = True
  1686.     
  1687.     If Tran_Pd = False Then
  1688.         Exit Sub
  1689.     End If
  1690.     
  1691.     On Error GoTo Err1
  1692.     Cw_DataEnvi.DataConnect.BeginTrans
  1693.     
  1694.     TranCount = TranJsq          '记录生成凭证的个数
  1695.     VoidStr = ""         '记录没有数值的空凭证序号
  1696.     
  1697.     '对转帐列表网格内选中的TranJsq个转帐过程依次生成凭证,写到临时凭证数据表中
  1698.     For jsq = 1 To TranJsq
  1699.         
  1700.         '定位转帐定义辅表,找到转帐编码为TranNum(jsq)的转帐关系
  1701.         SqlStr = "select * from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' Order by AutoTranId "
  1702.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1703.         If Rec_AutoTranItem.EOF = True Then
  1704.             Jsq_Eff = Jsq_Eff - 1
  1705.         Else
  1706.             Jhj = 0
  1707.             Dhj = 0
  1708.             hjje = 0      '合计金额
  1709.             '写临时凭证主表
  1710.             lng_OperationNum = CreatBillID("0102")
  1711.             Call Save_TempPz_Main(TranVouchClass(jsq), TranNum(jsq), OperationNum, lng_OperationNum)
  1712.             
  1713.             '按转帐定义关系,取每笔转帐数据,写入临时数据辅表中
  1714.             serialno = 1
  1715.             Do While Rec_AutoTranItem.EOF = False
  1716.                 Je = Round(Rec_AutoTranItem.Fields("Constant") * Rec_AutoTranItem.Fields("DistriProp") / 100, Xtjexsws)
  1717.                 '写临时凭证辅表
  1718.                 Call Save_TempPz_Ass(lng_OperationNum, serialno, Rec_AutoTranItem.Fields("Digest"), Rec_AutoTranItem.Fields("Ccode"), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Trim(Rec_AutoTranItem.Fields("TranOri")))
  1719.                 Rec_AutoTranItem.MoveNext
  1720.                 serialno = serialno + 1
  1721.                 hjje = hjje + Je
  1722.             Loop
  1723.             
  1724.         End If
  1725.         
  1726.         If hjje = 0 Then              '合计金额
  1727.             '删除空凭证主从表
  1728.             SqlStr = "Delete From Cwzz_AccVouchSubTemp Where VouchId=" & lng_OperationNum
  1729.             Cw_DataEnvi.DataConnect.Execute SqlStr
  1730.             SqlStr = "Delete From Cwzz_AccVouchMainTemp Where VouchId=" & lng_OperationNum
  1731.             Cw_DataEnvi.DataConnect.Execute SqlStr
  1732.             VoidStr = VoidStr + Str(jsq) + " "
  1733.             TranCount = TranCount - 1
  1734.         End If
  1735.         
  1736.     Next jsq
  1737.     
  1738.     Cw_DataEnvi.DataConnect.CommitTrans
  1739.     
  1740.     '没有有效凭证生成,即金额、数量均为0
  1741.     If Len(VoidStr) <> 0 Then
  1742.         Tsxx = "第" & VoidStr & "张凭证没有发生额,不需要结转!"
  1743.         Call Xtxxts(Tsxx, 0, 4)
  1744.     End If
  1745.     
  1746.     If TranCount > 0 Then       '记录生成凭证的个数
  1747.         '记录此次转帐的批号,做为凭证窗体调用的参数
  1748.         AutoTran_PzFrm.Lab_OperNum.Caption = OperationNum
  1749.         
  1750.         '调入凭证制作窗体
  1751.         AutoTran_PzFrm.Show 1
  1752.         
  1753.         
  1754.         '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
  1755.         Call Write_Date
  1756.         Call Clean
  1757.     End If
  1758.     Call Cxnrtcwg
  1759.     Exit Sub
  1760.     
  1761. Err1:
  1762.     Cw_DataEnvi.DataConnect.RollbackTrans
  1763.     'Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
  1764.     Tsxx = Err.Description
  1765.     Call Xtxxts(Tsxx, 0, 1)
  1766.     Exit Sub
  1767.     
  1768. End Sub
  1769. Private Sub Save_TempPz_Ass(VouchIdTemp_Id As Long, serialnum As Integer, Str_Digest As String, Str_Kmh As String, Str_Dept As String, Str_Per As String, Str_Cus As String, Str_Sup As String, Str_Item As String, str_TranOri As String) '写临时凭证辅表
  1770.     'VouchIdTemp_Id临时凭证主表、辅表对应关系Id号
  1771.     Dim Rec_VouchTemp As New ADODB.Recordset            '临时凭证辅表记录集
  1772.     
  1773.     '打开临时凭证辅表,用于存放转帐凭证内容
  1774.     Rec_VouchTemp.Open "select * from Cwzz_AccVouchsubTemp where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1775.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * from Cwzz_AccCode where Ccode='" & Str_Kmh & "'")
  1776.     With Rec_VouchTemp
  1777.         .AddNew
  1778.         
  1779.         '[公共信息
  1780.         If str_TranOri = "贷" Then                               '若记入借方
  1781.             .Fields("Dfje") = Je                                 '贷方金额
  1782.             .Fields("Jfje") = 0
  1783.             .Fields("Jfsl") = 0
  1784.         Else
  1785.             .Fields("Jfje") = Je                                 '借方金额
  1786.             .Fields("Dfje") = 0
  1787.             .Fields("Dfsl") = 0
  1788.         End If
  1789.         .Fields("Digest") = Str_Digest                           '摘要
  1790.         .Fields("Ccode") = Str_Kmh                               '转帐科目号
  1791.         .Fields("VouchId") = VouchIdTemp_Id                  '与主表的对应ID
  1792.         .Fields("serialID") = serialnum                  '序号ID
  1793.         
  1794.         ']公共信息
  1795.         
  1796.         If RecTemp.EOF = True Then
  1797.             Exit Sub
  1798.         End If
  1799.         
  1800.         '[数量信息
  1801.         If RecTemp.Fields("QuantityFlag") = True Then
  1802.             If str_TranOri = "贷" Then
  1803.                 .Fields("Dfsl") = Sl                          '贷方数量
  1804.                 .Fields("Jfsl") = 0
  1805.             Else
  1806.                 .Fields("Dfsl") = 0
  1807.                 .Fields("Jfsl") = Sl
  1808.             End If
  1809.         Else
  1810.             .Fields("Jfsl") = 0
  1811.             .Fields("Dfsl") = 0
  1812.         End If
  1813.         ']数量信息
  1814.         
  1815.         
  1816.         '[项目信息
  1817.         If RecTemp.Fields("ItemFlag") = True Then
  1818.             If str_TranOri = "贷" Then
  1819.                 .Fields("ItemDfsl") = ItemSl
  1820.                 .Fields("ItemJfsl") = 0
  1821.             Else
  1822.                 .Fields("ItemDfsl") = 0
  1823.                 .Fields("ItemJfsl") = ItemSl
  1824.             End If
  1825.             .Fields("ItemClassCode") = RecTemp.Fields("ItemClassCode")
  1826.             .Fields("ItemCode") = Str_Item
  1827.         Else
  1828.             .Fields("ItemJfsl") = 0
  1829.             .Fields("ItemDfsl") = 0
  1830.         End If
  1831.         ']项目信息
  1832.         
  1833.         '[辅助信息
  1834.         If RecTemp.Fields("PersonFlag") = True Then
  1835.             .Fields("PersonCode") = Str_Per                              '个人
  1836.         End If
  1837.         If RecTemp.Fields("DeptFlag") = True Then
  1838.             .Fields("DeptCode") = Str_Dept                           '部门
  1839.         End If
  1840.         If RecTemp.Fields("CusFlag") = True Then
  1841.             .Fields("CusCode") = Str_Cus                                  '客户
  1842.         End If
  1843.         If RecTemp.Fields("SupplierFlag") = True Then
  1844.             .Fields("Suppliercode") = Str_Sup                           '供应商
  1845.         End If
  1846.         ']辅助信息
  1847.         
  1848.         
  1849.         '[币别信息
  1850.         .Fields("AccRate") = 1
  1851.         .Fields("ForeignCurrCode") = XtSCurrCode
  1852.         If str_TranOri = "贷" Then                               '若记入借方
  1853.             .Fields("WbDfje") = Je
  1854.             .Fields("WbJfje") = 0
  1855.         Else
  1856.             .Fields("WbJfje") = Je
  1857.             .Fields("WbDfje") = 0
  1858.         End If
  1859.         ']币别信息
  1860.         
  1861.         '[银行结算信息
  1862.         .Fields("SScode") = ""
  1863.         .Fields("BillNo") = ""
  1864.         .Fields("TranPerson") = ""
  1865.         ']银行结算信息
  1866.         
  1867.         .Update
  1868.     End With
  1869. End Sub
  1870. Private Sub Run4()      '期间损益结转、管理费用差额结转
  1871.     
  1872.     Dim Tj_Main As String                                   '总帐取数公式
  1873.     Dim Tj_List As String                                   '明细帐取数公式
  1874.     Dim Tj_Ass As String                                    '辅助帐取数公式
  1875.     
  1876.     Dim jsq As Integer                                      '临时计数器
  1877.     Dim i As Integer                                        '凭证序列号
  1878.     
  1879.     Dim Rec_AccCcode As New ADODB.Recordset                 '会计科目记录集
  1880.     Dim Rec_AccAss As New ADODB.Recordset                   '总辅助帐
  1881.     Dim Rec_AccList As New ADODB.Recordset                  '明细帐
  1882.     Dim RecAssType As ADODB.Recordset                       '判断转帐科目有几种辅助核算时用
  1883.     Dim lng_OperationNum As Long
  1884.     Bln_DeleteFlag = True
  1885.     
  1886.     If Tran_Pd = False Then
  1887.         Exit Sub
  1888.     End If
  1889.     
  1890.     On Error GoTo Err1
  1891.     Cw_DataEnvi.DataConnect.BeginTrans
  1892.     
  1893.     TranCount = TranJsq          '记录生成凭证的个数
  1894.     VoidStr = ""         '记录没有数值的空凭证序号
  1895.     
  1896.     '对转帐列表网格内选中的TranJsq个转帐过程依次生成凭证,写到临时凭证数据表中
  1897.     For jsq = 1 To TranJsq
  1898.         
  1899.         'VouchIdTemp=jsq + OperationNum 为了确保VouchIdTemp每次生成时唯一
  1900.         '借方或贷方有有效数据时,写临时凭证主表,否则有效转帐过程-1
  1901.         
  1902.         lng_OperationNum = CreatBillID("0102")
  1903.         Call Save_TempPz_Main(TranVouchClass(jsq), TranNum(jsq), OperationNum, lng_OperationNum)
  1904.         
  1905.         '定位转帐定义辅表,找到转帐编码为TranNum(jsq)的转帐关系(把对方汇总数除外)
  1906.         SqlStr = "select * from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaCode<>'05' order by AutoTranId"
  1907.         Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1908.         i = 1
  1909.         If Rec_AutoTranItem.EOF = False Then
  1910.             Jhj = 0
  1911.             Dhj = 0
  1912.             Jhjsl = 0
  1913.             Dhjsl = 0
  1914.             hjje = 0      '合计金额
  1915.             Do While Rec_AutoTranItem.EOF = False                           '转帐关系定义数据记录集
  1916.                 Tj_Main = "Ccode='" & Trim(Rec_AutoTranItem.Fields("GetCcode") & "") & "'"
  1917.                 Tj_List = Tj_Main
  1918.                 
  1919.                 SqlStr = "Select * from Cwzz_AccCode Where " & Tj_Main & ""
  1920.                 Set RecAssType = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1921.                 If RecAssType.EOF = False Then                           '转帐科目是否存在
  1922.                     If RecAssType.Fields("stopflag") <> True Then         '若该科目没有停用
  1923.                         '若该科目不参与任何辅助核算
  1924.                         If Trim(RecAssType.Fields("DeptFlag") & "") <> True And Trim(RecAssType.Fields("PersonFlag") & "") <> True And Trim(RecAssType.Fields("CusFlag") & "") <> True And Trim(RecAssType.Fields("SupplierFlag") & "") <> True And Trim(RecAssType.Fields("ItemFlag") & "") <> True Then
  1925.                             TjAss = ""
  1926.                             Call Balance(Tj_Main, Tj_List, Tj_Ass)
  1927.                             If Rec_AutoTranItem.Fields("TranOri") = "借" Then
  1928.                                 Je = -Je
  1929.                                 Sl = -Sl
  1930.                                 ItemSl = -ItemSl
  1931.                             End If
  1932.                             If Je <> 0 Or SJ <> 0 Or ItemSl <> 0 Then
  1933.                                 If Rec_AutoTranItem.Fields("TranOri") = "借" Then
  1934.                                     Jhj = Jhj + Je
  1935.                                 Else
  1936.                                     Dhj = Dhj + Je
  1937.                                 End If
  1938.                                 Call Save_TempPz_Ass(lng_OperationNum, i, Rec_AutoTranItem.Fields("Digest"), Rec_AutoTranItem.Fields("Ccode"), "", "", "", "", "", Rec_AutoTranItem.Fields("TranOri"))
  1939.                                 i = i + 1
  1940.                             End If
  1941.                         Else
  1942.                             If Chk_Vouch.Value = 1 Then   '包含未记帐凭证
  1943.                                 SqlStr = " SELECT DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode, ItemCode,b.Qmye , b.Qmsl, b.QmItemSl From " & _
  1944.                                 "(SELECT DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode,ItemCode, Qmye = SUM(YcyeHj + Jfljjehj - Dfljjehj),Qmsl = SUM(Ycslhj + Jfljslhj - Dfljslhj),QmItemSl = Sum(YcItemslHj + JfljItemslhj - DfljItemslhj) From " & _
  1945.                                 "((SELECT DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode,ItemCode, YcyeHj = SUM(Ycye), Ycslhj = SUM(Ycsl),YcItemSlHj = SUM(YcItemSl), JfljjeHj = 0, Dfljjehj = 0, Jfljslhj = 0,Dfljslhj = 0, JfljItemslhj = 0, DfljItemslhj = 0 From Cwzz_AccSumAssi " & _
  1946.                                 " WHERE " & Tj_Main & " AND Year ='" & Int_Year & "' AND Period = 1 GROUP BY DeptCode, PersonCode, CusCode, Suppliercode,ItemClassCode, ItemCode) Union All " & _
  1947.                                 "(SELECT DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode,ItemCode, YcyeHJ = 0, Ycslhj = 0, YcItemslHj = 0, JfljjeHj = SUM(Jfje),Dfljjehj = SUM(Dfje), Jfljslhj = SUM(Jfsl), Dfljslhj = SUM(Dfsl),JfljItemslhj = SUM(ItemJfsl), DfljItemslhj = SUM(ItemDfsl) From Cwzz_V_AccVouch " & _
  1948.                                 " WHERE " & Tj_Main & " AND Year ='" & Int_Year & "' AND Period <='" & Int_Period & "' GROUP BY DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode,ItemCode)) a GROUP BY DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode, ItemCode) b ORDER BY DeptCode, PersonCode, CusCode, Suppliercode, ItemClassCode, ItemCode "
  1949.                             Else
  1950.                                 SqlStr = "Select DeptCode,PersonCode,CusCode,Suppliercode,ItemClassCode,ItemCode,Qmye,Qmsl,QmItemSl From  Cwzz_AccSumAssi Where " & Tj_Main & " And Year='" & Int_Year & "' And Period='" & Int_Period & "' order by DeptCode,PersonCode,CusCode,Suppliercode,ItemClassCode,ItemCode"
  1951.                             End If
  1952.                             Set Rec_AccAss = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1953.                             If Rec_AccAss.EOF = False Then
  1954.                                 Do While Rec_AccAss.EOF = False
  1955.                                     aa = Trim(Rec_AccAss.Fields("DeptCode") & "")
  1956.                                     '计算该科目下的所有部门个人等的期末余额
  1957.                                     Je = Rec_AccAss.Fields("Qmye")
  1958.                                     Sl = Rec_AccAss.Fields("Qmsl")
  1959.                                     ItemSl = Rec_AccAss.Fields("QmItemSl")
  1960.                                     
  1961.                                     If Rec_AutoTranItem.Fields("TranOri") = "借" Then
  1962.                                         Je = -Je
  1963.                                         Sl = -Sl
  1964.                                         ItemSl = -ItemSl
  1965.                                     End If
  1966.                                     '[写临时凭证,并计算借、贷方合计
  1967.                                     If Je <> 0 Or Sl <> 0 Or ItemSl <> 0 Then
  1968.                                         If Rec_AutoTranItem.Fields("TranOri") = "借" Then
  1969.                                             Jhj = Jhj + Je
  1970.                                             Jhjsl = Jhjsl + Sl
  1971.                                         Else
  1972.                                             Dhj = Dhj + Je
  1973.                                             Dhjsl = Dhjsl + Sl
  1974.                                         End If
  1975.                                         Call Save_TempPz_Ass(lng_OperationNum, i, Rec_AutoTranItem.Fields("Digest"), Rec_AutoTranItem.Fields("Ccode"), Trim(Rec_AccAss.Fields("DeptCode") & ""), Trim(Rec_AccAss.Fields("PersonCode") & ""), Trim(Rec_AccAss.Fields("CusCode") & ""), Trim(Rec_AccAss.Fields("Suppliercode") & ""), Trim(Rec_AccAss.Fields("ItemCode") & ""), Rec_AutoTranItem.Fields("TranOri"))
  1976.                                         i = i + 1
  1977.                                     End If
  1978.                                     Rec_AccAss.MoveNext
  1979.                                 Loop
  1980.                             End If      '总辅助帐计算后记录集不为空
  1981.                         End If          '有无辅助核算
  1982.                     End If              '科目没有停用
  1983.                 End If                  '转帐科目是否存在
  1984.                 Rec_AutoTranItem.MoveNext
  1985.                 hjje = hjje + Je
  1986.             Loop
  1987.             
  1988.             '[“对方汇总数”的转帐关系
  1989.             SqlStr = "select * from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaCode='05'"
  1990.             Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1991.             If Rec_AutoTranItem.EOF = False And Abs(Jhj - Dhj) > 0.001 Then
  1992.                 Je = Jhj - Dhj
  1993.                 If Rec_AutoTranItem.Fields("TranOri") = "借" Then
  1994.                     Je = -Je
  1995.                 End If
  1996.                 Sl = 0
  1997.                 ItemSl = 0
  1998.                 Call Save_TempPz_Ass(lng_OperationNum, i, Rec_AutoTranItem.Fields("Digest"), Rec_AutoTranItem.Fields("Ccode"), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Rec_AutoTranItem.Fields("TranOri"))
  1999.                 i = i + 1
  2000.             End If
  2001.             ']“对方汇总数”的转帐关系
  2002.             
  2003.         End If
  2004.         
  2005.         If hjje = 0 Then              '合计金额
  2006.             '删除空凭证主从表
  2007.             SqlStr = "Delete From Cwzz_AccVouchSubTemp Where VouchId=" & lng_OperationNum
  2008.             Cw_DataEnvi.DataConnect.Execute SqlStr
  2009.             SqlStr = "Delete From Cwzz_AccVouchMainTemp Where VouchId=" & lng_OperationNum
  2010.             Cw_DataEnvi.DataConnect.Execute SqlStr
  2011.             VoidStr = VoidStr + Str(jsq) + " "
  2012.             TranCount = TranCount - 1
  2013.         End If
  2014.     Next jsq
  2015.     Cw_DataEnvi.DataConnect.CommitTrans
  2016.     
  2017.     '没有有效凭证生成,即金额、数量均为0
  2018.     If Len(VoidStr) <> 0 Then
  2019.         Tsxx = "第" & VoidStr & "张凭证没有发生额,不需要结转!"
  2020.         Call Xtxxts(Tsxx, 0, 4)
  2021.     End If
  2022.     
  2023.     If TranCount > 0 Then       '记录生成凭证的个数
  2024.         '记录此次转帐的批号,做为凭证窗体调用的参数
  2025.         AutoTran_PzFrm.Lab_OperNum.Caption = OperationNum
  2026.         
  2027.         '调入凭证制作窗体
  2028.         AutoTran_PzFrm.Show 1
  2029.         
  2030.         
  2031.         '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
  2032.         Call Write_Date
  2033.         Call Clean
  2034.     End If
  2035.     Call Cxnrtcwg
  2036.     Exit Sub
  2037.     
  2038. Err1:
  2039.     Cw_DataEnvi.DataConnect.RollbackTrans
  2040.     'Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
  2041.     Tsxx = Err.Description
  2042.     Call Xtxxts(Tsxx, 0, 1)
  2043.     Exit Sub
  2044.     
  2045. End Sub