2013年6月28日金曜日

VBAから接続時に"クエリが時間切れになりました"エラー [SQLServer]

SQLServerにVBAから接続したときに"クエリが時間切れになりました"とエラー



----------------------------------------------

Set con = CreateObject("ADODB.Connection")

'タイムアウト時間なし
con.CommandTimeout = 0

~SQL実行処理~

---------------------------------------------

でタイムアウトなしに。


やっぱり表示データ少なくして対応・・・

2013年6月27日木曜日

プラスっぽい十字をを引っ張ってコピーすると罫線が消える [Excel]

Excelで十字を引っ張ってコピーすると罫線が消える・・・





コピーした後に右下に出てくるのをクリックして書式なしコピーを選んだら消えた。

2013年6月26日水曜日

Excelの使用しているセルの最終行を知りたい!! [VBA]

行を順番に検索していきたいんだけど使ってるセルの最終行を知りたい!!

---------------------------------------------------------------

Dim maxRow As Integer
maxRow = Sheet.UsedRange.Rows(Sheet.UsedRange.Rows.Count).Row

---------------------------------------------------------------

でいいのかな。

2013年6月25日火曜日

変数宣言のときに初期化されない [VBA]

VBAって変数宣言のときに初期化されない???

ループの1週目はNullなのに2週目以降にNullに戻ってないし・・・

-------------------------------------------------
Do While True

  '変数宣言

  Dim testRange As Range

  ~色々処理~

  If testRange Is Nothing Then

    ~色々処理~

  End If

Loop
-------------------------------------------------


どっかのセルを最初に入れといてそれを初期値でいいか↓
-------------------------------------------------
Do While True

  '変数宣言

  Dim testRange As Range

  '初期値でどっかのセルを入れておく
  Set testRange = Range("A1")

  ~色々処理~

  '最初に入れたセルなら初期値のまま
  If testRange = Range("A1") Then

    ~色々処理~

  End If

Loop
-------------------------------------------------

ちゃんと検証してないけどSet系の変数だけかな?


変数宣言しなくても良い言語だもんね・・・

2013年6月20日木曜日

decimalを整数型にキャストして小数点の切り捨て [C#]

decimalの小数点の切り捨て方法

--------------------------------------------------

decimal decitest;

~処理~

int intest = Decimal.ToInt32(decitest);

long longtest = Decimal.ToInt64(decitest);

--------------------------------------------------

decimalからならこれでいぃかφ(..)

2013年6月19日水曜日

フィールドの型・精度とか変更時にビューの情報(メタデータ)を一括で更新 [SQLServer]

テーブルのフィールドの型とか精度とか変えてから
ビューの情報を取得しても更新されてない前のままのがでる・・・

ビューのデザインを開いて登録し直すか、

-------------------------------------------
exec sp_refreshview [ビュー名1];
-------------------------------------------


を実行するとメタデータが更新されるみたい。

一つのテーブルが色んなビューに使われてると更新めんどいから・・・

-------------------------------------------
USE [データベース名]

ALTER PROCEDURE [プロシージャ名]
AS

BEGIN

exec sp_refreshview [ビュー名1];

exec sp_refreshview [ビュー名2];

exec sp_refreshview [ビュー名3];

END
-------------------------------------------

でストアドプロシージャに全ビューを登録しとけば、
何か変更したらとりあえずこのストアドプロシージャ実行しとけば大丈夫に。


フィールド名変更は対応してくれないけど

2013年6月18日火曜日

Windows7でタスクバーのアプリを詳細表示し結合せずにXPのように表示する [Windows]

Windows7ってタスクバーにあるアプリケーションがアイコンだけ表示されて同じのは重なっちゃう。





XPみたいに表示する方法

タスクバーで右クリック

プロパティ

タスク バーのタブ

タスク バーのボタンの

[常に結合、ラベルを非表示]を

[タスク バーがいっぱいの場合に結合]か[結合しない]

に変更。


こっちの方が選びやすいから明日からこっちにしよう。

テーブルの型とか最大値の情報取得 [SQLServer]

プログラムからテーブルのカラム毎の型とか最大値とかの情報を知りたい!

用意されてるストアドプロシージャに良いのある

---------------------------------------------------

EXEC sp_MShelpcolumns テーブル名

---------------------------------------------------

ビューとかもこれでできそう。

2013年6月14日金曜日

DataGridViewでEnter押下時に下に移動じゃなくて右に移動したい [C#]

DataGridViewでEnter押下時に下に移動じゃなくて右に移動したい!!

オーバーライドしなきゃいかんのかな・・・

----------------------------------------------------------------

public class DataGridViewOverride : DataGridView
{
  [System.Security.Permissions.UIPermission(
  System.Security.Permissions.SecurityAction.LinkDemand,
  Window = System.Security.Permissions.UIPermissionWindow.AllWindows)]
  protected override bool ProcessDialogKey(Keys keyData)
  {
    //Enter
    if (keyData == Keys.Enter)
    {
      return base.ProcessDialogKey(Keys.Tab);
    }
    //Enter + シフト
    else if (((keyData & Keys.Shift) == Keys.Shift) &&
    ((keyData & Keys.Enter) == Keys.Enter))
    {
      return base.ProcessDialogKey(Keys.Tab | Keys.Shift);
    }

    return base.ProcessDialogKey(keyData);
  }
}

----------------------------------------------------------------


特定の列は飛ばすとかもこんな感じで何とか


オーバーライドすると複雑になるね・・・


[ ]の部分は無くても動き変わらんからなくてもいぃんかな?

2013年6月13日木曜日

viewerControlの表示時に計算式を実行 [VBReport]

デフォルトだとviewerControlで表示する時に、
デザインファイルの計算式が計算されずに元の読み込んだ時の値がそのまま出てくる・・・


---------------------------------------------------------

xlsReport.ExcelMode = true;

---------------------------------------------------------


を最後に追加したら計算してくれた!

2013年6月12日水曜日

VBA高速化のため描画・自動計算を止める [VBA]

VBAで計算式がいっぱい入ったExcelシートにデータベースの情報を表示するプログラム書いたんだけど・・・・・


一つずつ表示する毎に、描画して、自動計算してってやるからおっそい!

目で追える・・・



止める方法あった

------------------------------------------------

'画面の描画を停止

Application.ScreenUpdating = False


'Excelの自動計算をとめる
Application.Calculation = xlCalculationManual



'イベントの発生をとめる
Application.EnableEvents = False


~~処理~~


'最後に元に戻す

Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True

-------------------------------------------------



むっちゃ早くなった!

2013年6月11日火曜日

小数点の四捨五入 [C#]

四捨五入のやり方


よく分からんから毎回ググってんだけどもっと分かりやすい四捨五入クラスあれば良いのに



---------------------------------------------------

decimal deci = 123.456;



deci = Math.Round(deci, 2, MidpointRounding.AwayFromZero);

---------------------------------------------------



第一引数は四捨五入する値

第二引数は小数点の桁数

第三引数は謎



using System;

があればいぃのかな。



・・・・これじゃ整数の四捨五入できないじゃん

2013年6月10日月曜日

構成比 [SQLServer]

構成比を求めたい!!


伝票テーブルで、特定の日付の、商品ごとの金額の比率を求めたい。



SELECT [商品コード],

      SUM([金額]) AS [総金額],
(SUM([金額]) / (SELECT SUM([金額])

                FROM [伝票テーブル] WHERE ([伝票日付]='2013-06-10'))) AS [構成比]

FROM [伝票テーブル]

WHERE ([伝票日付]='2013-06-10')
GROUP BY [商品コード]





こんな感じ?



速度的にもっと良い方法あるのかな。

2013年6月6日木曜日

数値にキャスト [C#]

数値にキャストするとき、


int integer = int.Parse("文字列");


じゃなくて全部、


int integer;


int.TryParse("文字列", out integer);


にしちゃっていいかな

バグ発見しにくくなるかな・・・

2013年6月3日月曜日

StatusStrip詰めろー [C#]

StatusStrip使ってみた。


SizingGripをFalseにして右のサイズ変更できますよマーク消したんだけど・・・



消えた分の幅詰めてくれない!!




無理なんかなー



もぉテキストボックス一個ずつ自分で配置・・・