SQLの窓

2009年10月20日


VBScript : ADO : ODBC接続 : SQLExpress(SQLServer) 2005 接続と通常処理( 更新は SQL で行う )

ドライバは、古い {SQL Server} ドライバを使用していますが、VBS では、{SQL Native Client} を使っても同じだと思います。

このサンプルでは SQL の更新を接続オブシェクトのメソッドで SQL 文字列を使って実行しています。フィールドオブジェクトにセットして更新する方法もありますが、他の言語間での移植が困難になるので、このほうが良い環境はたくさんあると思います

関連する記事

SQLExpress 2005 の接続設定
VBS : ADO : フィールドオブジェクトを使用した同一フォーマットのテーブル間のデータコピー
VBS : ADO : 純正接続 : SQLExpress(SQLServer) 2005 接続と通常処理
' ***********************************************************
' SQLExpress 2005 / ODBC / {SQL Server}
' ADO : 文字列更新
' FileSystemObject : CSV出力
' ***********************************************************
strDriver = "{SQL Server}"
strTarget = "NIGHT_TCP"		' 別名
strDB = "lightbox"
strUser = "sa"
strPass = "passwordpassword"

' ***********************************************************
' ADO + FileSystemObject
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )

' **********************************************************
' 接続文字列
' **********************************************************
ConnectionString = _
	"Provider=MSDASQL;" & _
	"Driver=" & strDriver & ";" & _
	"SERVER=" & strTarget & ";" & _
	"DATABASE=" & strDB & ";" & _
	"UID=" & strUser & ";" & _
	"PWD=" & strPass & ";"

' **********************************************************
' 接続
' クライアントカーソル(3)を使う事が推奨されます
' **********************************************************
Cn.CursorLocation = 3
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

Query = "select * from [社員マスタ]"

' **********************************************************
' レコードセット
' オブジェクト更新時はレコード単位の共有的ロック(3)を
' 使用します( デフォルトでは更新できません )
' ※ デフォルトでも SQLによる更新は可能です
' **********************************************************
'Rs.LockType = 3
on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True )

' **********************************************************
' タイトル出力
' **********************************************************
Buffer = ""
' 社員コードと氏名のみ
For i = 0 to 1
	if Buffer <> "" then
		Buffer = Buffer & ","
	end if
	Buffer = Buffer & Rs.Fields(i).Name
Next
Csv.WriteLine Buffer

' **********************************************************
' データ出力
' **********************************************************
UpdateCnt = 0
Do While not Rs.EOF
	Buffer = ""
	Buffer = Buffer & Rs.Fields("社員コード").Value
	Buffer = Buffer & "," & Rs.Fields("氏名").Value

	' 更新
	strDay = (UpdateCnt mod 10) + 1
	Query = "update [社員マスタ] set [生年月日] = '2005/01/0" & strDay & "'"
	Query = Query & " where 社員コード = '" 
	Query = Query & Rs.Fields("社員コード").Value
	Query = Query & "'"
	Cn.Execute( Query )

	Csv.WriteLine Buffer
	Rs.MoveNext
	UpdateCnt = UpdateCnt + 1
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close
' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close
' **********************************************************
' 接続解除
' **********************************************************
Cn.Close



posted by lightbox at 2009-10-20 17:06 | SQLExpress | このブログの読者になる | 更新情報をチェックする

VBS : ADO : 純正接続 : SQLExpress(SQLServer) 2005 接続と通常処理

ODBC では無く Microsoft OLE DB Provider for SQL Server を使用しています
関連する記事
ADO 関数 : 接続/読み込み/接続解除
SQLExpress 2005 の接続設定
VBS : ADO : ODBC接続 : SQLExpress(SQLServer) 2005 接続と通常処理( 更新は SQL で行う )


posted by lightbox at 2009-10-20 08:36 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2009年10月15日


SQLServer : sa が有効かどうかを確認する SQL

.\SQLEXPRESS は SQLExpress の通常のデフォルト

DB がインストールされている PC で
sqlcmd -E -S .\SQLEXPRESS でログインした後、以下を実行します

select is_disabled from sys.server_principals where name= 'sa'
go

有効にするには、

ALTER LOGIN sa ENABLE
GO

を実行し、パスワードは

ALTER LOGIN sa WITH PASSWORD = 'パスワード文字列'
GO

で設定します


posted by lightbox at 2009-10-15 18:19 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2009年08月28日


SQL Server 2000 以前で可能だった *= を使った外部結合がエラーになる場合の対処

MSDN オンライン : sp_dbcmptlevel

LEFT OUTER JOIN に書き直せとの事ですが
sp_dbcmptlevel で無事動作しました
( 将来この機能も使えなくなる予定らしい )

sa で実行
sp_dbcmptlevel データベース名, 80




タグ:トラブル
posted by lightbox at 2009-08-28 16:59 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2009年08月21日


SQLServer : バックアップ

backup.sql
DECLARE @BK varchar(100)
SET @BK = 'c:\TMP\backup' + CONVERT(varchar, GETDATE(),112) + '.bak' 
BACKUP DATABASE lightbox TO DISK = @BK


※ GETDATE() は 20090821 のようになります

バッチファイルは以下のように記述します

@sqlcmd.exe -S .\SQLEXPRESS -U sa -P password -i backup.sql
.\SQLEXPRESS は、ほぼどのような環境でも接続可能だと思いますが、 別名が定義されている場合はそれを利用してもかまいません 関連する記事 SQLExpress 2005 のインストールから最速設定 
posted by lightbox at 2009-08-21 12:16 | SQLExpress | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり