現象
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月27日土曜日
2012年10月1日月曜日
mibarcode.exeを立ち上げると、「システムリソースが足りません」とでる
Mibarcd.iniを削除したら出なくなりました。
Mibarcd.iniは、Mibarcd.exeを立ち上げると自動で作られます
Mibarcd.exeを違うフォルダに移すと正常に立ち上がるようになることから気づきました。
正常なiniファイルと比べてみるとfontsizeが異常なのが分かる
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が走って無視されてしまうんでしょうね
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が走って無視されてしまうんでしょうね
登録:
投稿 (Atom)