2012年10月27日土曜日

sqlserver2008のピボットテーブルの更新をすると、「データソース名および指定された既定のドライバが見つかりません」となる

現象
sqlserver2008のピボットテーブルをエクセルで作って、他のpcに配布して実行すると、
「データソース名および指定された既定のドライバが見つかりません」とエラーになって
データが取り出せない

原因
その端末に、SQL Server Native Client がインストールされていない
処置
SQL Server Native Client をインストールする
microsoft download centerで検索語、"Microsoft SQL Server 2008 用 Feature Pack"で出てきます
sqlserver2008で検索しても出てこないのが謎です
①の通りにするとインストールできます

端末ごとにクライアントをインストールしなきゃいけないなんて面倒だな、
なんか、他にいい方法があるかもしれないけど、動いたからいいか。。

やってダメだったこと
動作するpcからodc記述を動かないpcにコピーしたがダメだった。

2012年10月1日月曜日

mibarcode.exeを立ち上げると、「システムリソースが足りません」とでる

Mibarcd.iniを削除したら出なくなりました。
Mibarcd.iniは、Mibarcd.exeを立ち上げると自動で作られます

Mibarcd.exeを違うフォルダに移すと正常に立ち上がるようになることから気づきました。

正常なiniファイルと比べてみるとfontsizeが異常なのが分かる

ダメなiniファイル 正常なiniファイル
[Options] [Options]
TaskTary=0 TaskTary=0
CodeType=2 CodeType=1
ThinWidth=0 ThinWidth=0
CheckDigit=0 CheckDigit=0
AddCodeChar=1 AddCodeChar=0
FormType=1 FormType=1
FormStyle=1 FormStyle=0
AutoCopy=1 AutoCopy=0
CopyToMf=0 CopyToMf=0
CopyToEMf=1 CopyToEMf=1
CopyToBm=0 CopyToBm=0
CBWatch=0 CBWatch=0
BarHeight=60 BarHeight=50
LeftMargin=20 LeftMargin=20
TopMargin=10 TopMargin=5
Font.Name=MS UI Gothic Font.Name=Tahoma
Font.Size=-8733 Font.Size=8
Font.Style=49 Font.Style=0
Font.Color=0x006F0047 Font.Color=0xFF000008
BoxDraw=0 BoxDraw=0
Comment=0 Comment=0
ComntPos=1 ComntPos=1
ComntAl=1 ComntAl=1
ComntStr= ComntStr=
QRVersion=4 QRVersion=4
QRErrLebel=0 QRErrLebel=0
Trim_Space=0 Trim_Space=0
PasteErr=0 PasteErr=0
[Desktop] [Desktop]
Windows.Flags=0 Windows.Flags=0
Windows.Show=1 Windows.Show=1
Windows.MaxX=-1 Windows.MaxX=-1
Windows.MaxY=-1 Windows.MaxY=-1
Windows.X=176 Windows.X=154
Windows.Y=232 Windows.Y=203
Windows.XSize=533 Windows.XSize=511
Windows.YSize=599 Windows.YSize=570
LastStr="/EXIT" LastStr=""
[History] [History]
Count=-1 Count=-1

vbaで連続でバーコードを走らせてなぜかexitが効かずに止まる場合に発生(再現100%)
手動でf8でスキップさせると発生しない
なぜだー

注意↓複数回走らせると、cpu100%になって動かなくなります。ctrl+atl+delでタスクマネージャーを立ち上げログオフするしか手がなくなります。タスクマネージャーのプロセスタブに、mibarcd.exeがたくさん貯まった状態になります。 プロセスが終了するまで待つプログラムを検討中です。。
少数のレコードで試すとmibarcd.exeがタスクマネージャーに溜まったのが見れます。

>プログラム1 順番が前後しますが、何を走らせてそうなったか

Sub MiBarCall()
    Dim Temp
    Dim Code

    'データを取得
    Set Code = Range("A1")
    '/HTxxx  バーコードの高さ。xxxに高さを指定。(例:/HT80)
    '/LMxxx  バーコードの両脇マージン。xxxにマージン指定。(例:/LM15)
    '/TMxxx  バーコードの上下マージン。xxxにマージン指定。(例:/TM10)
    '/ITF    ITFコードを使用します。
    '/TN2    サイズ2倍
    '/BC0    ITFコードの外枠なし。
    Worksheets("sheet1").Activate
    For i = 1 To 1
    Code = "A00001"
    Temp = Shell("C:\temp\Mibarcd.exe /S /HT60 /LM20 /TM10 /C39 /TN1 /cd0 /cc1 " + Trim(Code), 1)
    Cells(i, 1).PasteSpecial
    Temp = Shell("c:\temp\MiBarcd.exe /EXIT", 0)
   
    Next i
End Sub

原因を推測するに、バーコード表示が起動している最中に、exitが走って無視されてしまうんでしょうね