2007年4月27日金曜日

excel vbaでdtsを走らすと応答なしになる その2

別のexcelからvba,dtsを走らせるだけでは問題が解決しなかった











ステップを分けてdtsを走らせるようにしたら正常に走るようになった

あとtextfileを転送先destinationでなく sourceを指定すると 先にsourceステップが走りました
応答なしの原因不明、理屈分かってません、勘違いしている可能性があります

excel からdtsをキックするサンプルコード パラメータ、エラー処理付

Public Sub tracePackageError(oPackage As DTS.Package)
Dim ErrorCode As Long
Dim ErrorSource As String
Dim ErrorDescription As String
Dim ErrorHelpFile As String
Dim ErrorHelpContext As Long
Dim ErrorIDofInterfaceWithError As String
Dim I As Integer

For I = 1 To oPackage.Steps.Count
If oPackage.Steps(I).ExecutionResult = DTSStepExecResult_Failure Then
oPackage.Steps(I).GetExecutionErrorInfo ErrorCode, ErrorSource, ErrorDescription, _
ErrorHelpFile, ErrorHelpContext, ErrorIDofInterfaceWithError
MsgBox oPackage.Steps(I).Name & " failed" & vbCrLf & ErrorSource & vbCrLf & ErrorDescription
End If
Next I

End Sub
'エラー処理用
Public Function sAccumStepErrors( _
ByVal objPackage As DTS.Package) As String
'Accumulate the step error info into the error message.
Dim oStep As DTS.Step
Dim sMessage As String
Dim lErrNum As Long
Dim sDescr As String
Dim sSource As String

'Look for steps that completed and failed.
For Each oStep In objPackage.Steps
If oStep.ExecutionStatus = DTSStepExecStat_Completed Then
If oStep.ExecutionResult = DTSStepExecResult_Failure Then

'Get the step error information and append it to the message.
oStep.GetExecutionErrorInfo lErrNum, sSource, sDescr
sMessage = sMessage & vbCrLf & _
"Step " & oStep.Name & " failed, error: " & _
sErrorNumConv(lErrNum) & vbCrLf & sDescr & vbCrLf
End If
End If
Next
sAccumStepErrors = sMessage
End Function

Public Function sErrorNumConv(ByVal lErrNum As Long) As String
'Convert the error number into readable forms, both hexadecimal and decimal for the low-order word.

If lErrNum <> -65536 Then
sErrorNumConv = "x" &amp;amp;amp;amp; Hex(lErrNum) & ", " & CStr(lErrNum)
Else
sErrorNumConv = "x" & Hex(lErrNum) &amp;amp;amp;amp;amp; ", x" & _
Hex(lErrNum And -65536) & " + " & CStr(lErrNum And 65535)
End If
End Function
---------------------------------------------------
'本体
Sub dtsrun伝票()
Dim dtsp As New DTS.Package

Set dtsp = New DTS.Package
dtsp.LoadFromSQLServer ServerName:="xxxxxx", _
ServerUserName:="xxxxx", _
ServerPassword:="xxxxx", _
PackageName:="dts名"
dtsp.GlobalVariables("年月").Value = Worksheets("menu").Cells(3, 2).Value
dtsp.Execute

tracePackageError dtsp

Set dtsp = Nothing
End Sub


sqlserve enterprise managerのデータ変換サービス、dtsのデザイナで
パッケージのプロパティ グローバル変数で変数名を設定
vbaのグローバル変数と dtsデザイナのパラメータが等しくありませんが サンプルで別のdtsの
パラメータを貼り付けたので本来は一致するはずのものです

お勧めの会計ソフトは勘定奉行 勘定奉行仕様


lanパック 2ライセンスを買って正解だった
sqlでデータ操作ができ excelでピボットに勘定奉行のデータを呼び出して
04~03までの表を作成できます

適用の文字数に制限がありますが次の行に文字をいれれるので回避可能
一伝票250行まで汎用データを作るとき2伝票に分割して転送

保守は会計基準変更でソフトの更新が必要なのでobcの保守に入るのが正解と思う

勘定奉行仕様 


いろんな提案をしてくるぼった栗ソフトウエアベンダーに注意(笑)


2端末以上で同時に使おうとすると 同時接続は2台までとかメッセージが出て開きませんw
2端末以上同時に使わなきゃいけないことはまったくありませんでした
声を掛け合って閉じてもらうとかすれば問題ありませんでした
なぜか使ってないないのにロックが残っていることがあるが 勘定奉行からまたは ロック解除のexeがあるのでそこから解除可能

バックアップはsqlserverの自動バックアップと 手動で毎日メニューからしている

手書きの台帳から勘定奉行に移行する際は会社が委託?している会計士の先生と連携しながら
だとうまく手書きの台帳を廃止していけると思います

excel vbaでdtsを走らすと応答なしになる


excel2003 (11.8120.8122) sp2
widowsxp pro 5.1.2600
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
firewall offにしても応答なし
norton antivirus corporate edition
入っていても動く端末と応答なしの端末あり


sqlserver dtsをexcel vbaで走らすと 正常に走る端末と
応答なしになる端末がでた
windows,excelのバージョン microsoft updateで最新のupdateをかけているのに
原因は不明

aというexcelシートからdtsを呼び出して excel a→sqlserverにデータ転送する処理
同じブックを開く処理がいけないのも知れない

asのデータをexcelに書き出してsqlserverに入れてクエリで加工して勘定奉行に送る前の
汎用受入データを作成する処理

2007年4月26日木曜日

sqlseverでtrim

rtrim,ltrim
trimは無いようです

勘定奉行 翌年処理 残高調整ができない 手入力

原因 新年度の翌月繰越処理後に旧年度で科目を新設した場合残高調整が手入力になる

繰越残高調整処理を実行することができない。
http://www.obc.co.jp/support/faq/FAQ_detail.asp?FAQID=299

当たり前のことですがエラーが出ると焦ります

2007年4月23日月曜日

vba 前の実行を待って次を実行するには

Option Explicit 'SampleNo=074 WindowsXP VB6.0(SP5) 2002.05.16
'既存のプロセスオブジェクトのハンドルを取得(P665)
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
'指定のプロセスの終了コードを取得(P660)
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
'開かれているオブジェクトのハンドルを開放する(P1252)
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400&
Private Const STILL_ACTIVE = &H103&

Sub pcom()

Dim IDProcess As Long
Dim hProcess As Long
Dim ExitCode As Long
Dim ret As Long
' プロセスを入れる↓
IDProcess = Shell("notepad.exe")
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, IDProcess)
Do
ret = GetExitCodeProcess(hProcess, ExitCode)
DoEvents
Loop While (ExitCode = STILL_ACTIVE)
ret = CloseHandle(hProcess)

End Sub


'上記を貼り付けるだけ
'動作不具合による責任は負いません

jbcc new workfriend ニューワークフレンド

結論 使いにくい 単発のデータ検索依頼くらいにしか使えない

asまたはsqlserverのデータをexcelで参照できるようにするアプリ
asからプログラムなしで品番に対して注文数などを呼び出せ便利なようだが
レコードで自動化してもファイル名パス名が固定で
月ごとにファイルを作っていく場合にはレコードを作りなおさないといけない
検索も検索の先頭にカーソルを入れないと検索結果が得られない
定義の保存もローカルにしかできない ネットワークドライブをzなどに設定すれば
サーバーに定義を保存できるが、ほかのpcでも同様のネットワークドライブの設定をしていないと定義が呼び出せない

excel2000が立ち上がらない

エラー報告でcwbtfxla.xllが邪魔しているみたいな報告が出ていた
C:\Program Files\IBM\Client Access\Sharedのcwbtfxla.xllをリネームして
立ち上げたら立ち上がった cwbtfxla.xllが見つからないとのエラーメッセージは出た
とりあえずアドインからcwbtfxla.xllをはずした

cwbtfxla.xllはas400のclientaccessのexcelアドインのようです

ためしに立ち上がった後cwbtfxla.xllをアドインに加えてOKを押したらコケタ

アプリケーション定義またはオブジェクト定義のエラーです

worksheetにvba cells(1,1)などと記述すると出るようです

標準モジュール内で記述するとエラーは起こりません


*多分不正確な記述とは思いますが
上記でエラー回避できます

2007年4月21日土曜日

willリモコンが点灯しない

電池が消耗している可能性があります

1p、2pを認識しないとき
本体の赤いシンクロボタンを押す

2007年4月20日金曜日

勘定奉行 翌年処理後に自動仕分けを移すには

翌年処理後は残高調整のみ可能で 旧年に入れた自動仕分けは引き継げない

しかしテーブルwkjsf01 に入っておりデータの手動での移行は可能である

旧年度をadpなどで開き
新規入力分を選択後ofice linkでexcel出力後 新年度の
wkjsf01にインサートすると
新規分レコードが追加される


*バックアップ、ファイル名、中身を確認の上自己責任で行ってください
*操作ミス、誤記による損害の責任は負えません

FMT9001 異常終了

FMTSRCは異常終了としかでずエラーの内容を確認しにくい
前のログで警告 キー重複がエラー原因

メンバー D26TCP1 のレコード・キーが重複している。
メンバー D26TCP1 に重複キーを使用することはできない。
? C
ライブラリー CLIB メンバー PAC01L4 の PAC01L4 から 850 レコードを読み取
り, 850 レコードを選択した。
850 の合計レコードが読み取られて, 850 の合計レコードが選択された。
22 レコードが,ライブラリー CLIB メンバー D26TCP1 の出力ファイル JCMST02
に入れられた。
*** 異常終了 *** 07/04/20 11:36:56
(C D I R) CTS56# が 16100 で FMT9001 を受け取った。