IT」カテゴリーアーカイブ

SQLSERVER テーブルから新規テーブルを作成する

テーブルのデータに間違いがあって、ストアドやクエリから出力されたデータから間違いを探したいときに、出力結果をエクセルに貼り付けるが、大量になると探すのが面倒になる。
出力された結果をテーブルを作成してその中に入れておけばあとからでも見ることができるし調べるのも楽になる。

–SQLSERVER テーブルから新規テーブルを作成する SELECT INTOは初回実行のみ、2回めはエラーになるので2回目はINSERT INTO
–tmpa:新規テーブル CREATEで事前に作らなくてもよい
–Proc:既存テーブル
–Procテーブルと同じデータを持つtmpaを作りたい。
–SELECT INTOで作成されるテーブルはIndexや外部キーとかは作成されないらしい。あくまでも列のデータがコピーされる
SELECT * into tmpa FROM Procs–tmpaは新規テーブルでCREATEしていない

–FROM 以降のテーブルをSELECTで出力して新規テーブルに挿入する場合は別名にする
–別名にしないと警告が出る

SELECT * into tmp01 FROM (
	SELECT * FROM Member WHERE Age > 20
) as ab--FROM句のSELECT 出力の場合は別名にしておく

続きを読む

ClassicASP デバッグはResponse.END

ClassicASP デバッグはResponse.END
やResponse.Writeを使って出力して探す
Response.END
でそこまでで実行が止まるので、エラー箇所を徐々に絞っていける。
時間はかかるけどResponse.Writeすらうまくいかないときは便利

IISのログ記録アイコンがない|ClassicASPでDB接続ができない

IISのログが出力されていなかったWIN10 ログ記録アイコンがない

・結論
[note]コントロールパネルのWindows の機能の有効化または無効化にて
状態と診断のチェックを入れてインストールする[/note]

http://127.0.0.1/hiyoko/stoado01.aspで確認中
サーバ管理マネージャの設定が必要らしい
http://www.putise.com/server/windows-serevr-2008-r2/ii7-w3c-accesslog
でもWin10では
(1)サーバ管理マネージャをダウンロードした
続きを読む

selectして別のテーブルにINSERTするCREATEなしで、EXCEPT差分

まとめ
(1)新規テーブルに別のテーブルのデータをコピーしたい
select * into newtable from table where (条件)
この場合、同じクエリを実行するとすでにnewtableがあるよエラーになるので初回だけ使える
つまり、すでにnewtableが存在するときは使えない。
CREATE TABLEをしなくてもnewtableが作成されるので手間を省ける

(2)すでに存在するテーブルに別のテーブルからコピーしたい
insert into anotherTable select 列 from table where (条件)
(例)INSERT INTO newMember SELECT * FROM Member

<(1)の場合の例>
Memberテーブルがあったとする(name,age,cityの列)
このテーブルと同じテーブルを作りたい。
使い方は、クエリを書いていて、他のクエリに改良したときに、出力内容が同じかを確かめたいときに、それぞれのクエリのSELECT出力を新しいテーブルに入れる。
そして、2つ(もしくは3つとか)のテーブルを下記のEXCEPTで比較して0件なら同じ出力と言える。
数百行程度なら出力内容をコピーしてエクセルに貼り付ければよいが、これが10万件とかだとエクセルに貼り付けて確認するのも面倒になる。
そこで、SQLManagementStudioで確認できればそれが早い

テーブルを作ってデータを入れて確認したいときに、いちいちCREATE TABLEして列と型を書いて、、、とするとイライラするので無駄な手順が省けると非常に助かる。
でも一部の列だけの情報がほしいときは結局はCREATE TABLEでテーブル定義必要だったりする。

member一覧
member:もともとのテーブル
newmember:memberから新しいテーブルを作る

SELECT TOP 10 * FROM MEMBER
SELECT * INTO newMember FROM Member--これでCREATE TABLEを実行しなくても	newmemberテーブルが作成される。なおすでにテーブルが存在すると既にテーブルがあるよエラーになる。
--ただし、インデックスとかもろもろの設定はつかないのであくまでもデータを一時的に使いたいときに使うらしい
select * FROM newMember

[select * into newtable from table]はすでにテーブルが存在すると既にテーブルがあるよエラーになる。
–すでにテーブルが存在するときは

INSERT INTO newMember SELECT * FROM Member

INSERT INTOを使う

すでにテーブルが存在するのにSELECT INTOを使うとエラーになる。
すでにあるよエラー
EXCEPTで差分を調べる。同じ列である必要がある

--EXCEPTで2つのテーブルの差を検索する。これで0件なら一致
SELECT * FROM Member
EXCEPT
SELECT * FROM newMember

テーブル同士で差分を調べる

--LEFT OUTERで差分を調べる。NULLがあれば差がある
SELECT * FROM Member LEFT OUTER JOIN newMember ON Member.name = newMember.Name

SELECT * FROM Member LEFT OUTER JOIN newMember 
ON Member.name = newMember.Name
WHERE
	Member.name IS NULL or Member.age IS NULL or Member.City IS NULL
	--0件ならさいがないと思う

–NewMemberの一部を変更してみた

UPDATE newMember
SET City = 'a'
WHERE
	NAME = '坂本' AND Age = 19 AND City = '東京'

select * from newMember
/*
Name	Age	City
坂本	19	a  >>ここを変えた
中原	50	大阪
山岡	6	東京
赤橋	42	北海道
西	69	大阪
*/

SELECT * FROM Member
EXCEPT
SELECT * FROM newMember
/*
結果はmemberテーブルの坂本さんが違うと出力される
Name	Age	City
坂本	19	東京
*/

またテーブルのみならず
SELECTで出力した内容を挿入したいときは
–FROM のテーブルをSELECTで出力して新規テーブルに挿入する場合は別名にする
–別名にしないと警告が出る

SELECT * into tmp01 FROM (
	SELECT * FROM Member WHERE Age > 20
) as ab

それか、一旦別のテーブルに入れてからさらに、SELECT INTOしてもよいかも

rails学習 Mac にてユーザを登録するだけの簡単Railsアプリの勉強

rails Mac にてユーザを登録するだけの簡単Railsアプリの勉強
1年くらい勉強してやっとここまで理解できた。
書籍のチュートリアルをやるだけで理解できず、今度はひとつずつコマンドの意味を確認するようにしたら理解できるようになった。
railsがやっかいなのは、いろいろな記述方法が存在すること。
railsのバージョンによって記載が異なること。
さらに単数か複数が存在すること。
などなど、初心者、独学者にとっては地雷がたくさん存在すること。
なので、WEBの初心者にrailsはおすすめしない。
一旦他の環境(PHP,ASP,JAVA,HTMLなど)で学んでからrailsを学習することを勧める。そうしないとDBなどが理解できない。

以下のパスでやってみる
aidayota-no-MacBook-Pro:site maseda$ pwd
/Users/maseda/Documents/新書類/Webブログ、ネット/ruby_web2/site
aidayota-no-MacBook-Pro:site maseda$
続きを読む

買った書籍 VBA active reports vb .net サンプル本

買った書籍 VBA active reports vb .net サンプル本
エクセルのマクロは便利だ。実際使おうとするといろいろな知識が必要なので買った。
ActiveReportsは帳票に便利らしい。でも10万以上するのでおいそれと買えない。
VB.netはいまや少数派になってしまった。しかし、便利だ。
過去の秀逸な書籍は古本で買うしかない。

Excel VBAの教科書 (Informatics & IDEA)
              古川 順平
              ¥ 2,570
ゼロから分かるActiveReports帳票開発入門 (CodeZine BOOKS)
              グレープシティ株式会社 ActiveReportsチーム
              ¥ 2,160
続きを読む

info SQLSERVER わざとロックエラー

info SQLSERVER わざとロックエラー

https://www.excellence-blog.com/2016/11/11/sqlserver%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF%E7%8A%B6%E6%85%8B%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8Bsql/

SQLServerのテーブルロック状態を取得するSQL
https://lightgauge.net/database/sqlserver/3253/
続きを読む

画面ミラーリング Windows10 無料 アイフォンの画面をPCでみる

https://www.apowersoft.jp/iphone-ipad-recorder

自分で髪を切るときに後ろ髪を切るときに鏡がないときにアイフォンで撮影しながらPCをみて髪を切れるか

ApowersoftiPhone/iPad録画究極

Macの場合はQuickTimeプレーヤーを使える。

Windows版にはLonelyScreenがあるがこちらは有料で約14ドル/年間必要になる

SQLSERVER テーブル追加クエリ

–テーブル追加クエリ
CREATE TABLE Accounts(
amount DECIMAL(5,2) not null
)

INSERT INTO Accounts (amount) VALUES (12.15),(12.25)–カッコとカンマで区切る。これで別の行を追加にできる
–つまりこの段階で2行のデータが追加された

INSERT INTO Accounts (amount)
SELECT 12.35–SELECTでも追加

SELECT * FROM Accounts

結果

amount
12.15
12.25
12.35

VB.netのクラスで覚えたことを書いておく


VB.netのクラスで覚えたことを書いておく

インターフェース
よくわからないが、一言で言えば、派生クラスのオブジェクトをメソッドの引数として使える(意味があっているかわからないが)
だから、クラスのメソッドを派生クラスごとに作成する必要がなくなる。
ではどんな用途に向いているのか?
実際どんなときに使えるのかがよくわからない。
あまり使わないが使えると便利なのでできるだけ使うようにしておくと良いと思う。

・抽象クラスとは、基底クラスでオブジェクトは作れない。抽象メソッドがあると派生クラスもオブジェクトは作れない。
つまり、派生クラスで使用することが前提となる。
なので
オーバーライドする必要がある。

・継承について
コンストラクタ(Newメソッド)が派生クラスにある場合、派生クラスと基底クラスも実行されるので、注意が必要
例えば基本クラスのNewにプリント文があるとして、派生クラスのNewにもプリント文がある。
なんとなく、派生クラスのNewだけが実行されると思ってしまうが、結局全部実行される。これはコンストラクタだけの問題。
継承でもオーバーライドは使える。てっきり継承では使えず、抽象クラスで使うものかと思ってしまった。

基底クラスにOverridable 関数
派生クラスにOverrides 関数とする。
そうすると派生クラスで書いた関数が基底クラスの関数を上書きする

継承クラスの考え方は抽象クラスとほぼ同じなので、
抽象クラスを使いつつ、インターフェースとして活用できる道を考えてみる

文章で説明されてもすぐにイメージできないし理解できない。そうなると使えるようになるわけではないので、実際に実行して理解を深めるほかない。
動かしているうちになんとかわかってくるものである。
実際に使うときは、ほとんど継承の基本的な部分しか使いこなせない。
しかし、知識として知っていないとサンプルコードが読めなくなる。

事例
VB.netコンソールプロジェクトの例 実行はCtr+F5でコンソールが出力される。
実行だけではすぐに消える

Module Module1
‘VB.net 継承クラスと抽象クラスの書き方2018年12月22日勉強中
‘(1)継承クラス
‘ 書き方
‘ オーバーライドで基底クラスと派生クラスの宣言が異なる
‘ 基底クラス:オーバーライドはOverridable
‘  派生クラス:Inheritsを書いてオーバーライドOverrides
‘ コンストラクタnewはオーバーライドされないので基底クラスと派生クラスのコンストラクタNewが実行される
‘(2)抽象クラス

VB.net 2018年12月23日
Module Module1 ’コンソールアプリ
Sub Main()
    '抽象クラス
    Dim test As subCamera = New subCamera
    test.Release()
    Console.WriteLine(test.mainString)

    '継承Inherits
    Dim testKeisho As KeishoClass = New KeishoClass
    testKeisho.keishoFunc()
    testKeisho.OverTest() 'overrideした関数 
        '参照渡しと値渡しの勉強
        Console.Write("初期値")
        Dim i As Integer = 5

        Console.WriteLine(i)
        Dim sansho As SanshoClass = New SanshoClass
        sansho.sansho(i)
        Console.Write("参照:")
        Console.WriteLine(i)
        Console.Write("")
        Console.Write("初期化")
        i = 5
        Console.WriteLine(i)
        Console.Write("値渡し:")
        Console.WriteLine(i)
        sansho.atai(i)
        Console.Write("値渡しは値は変わらず")
        Console.WriteLine(i)
End Sub
End Module
 '抽象クラス
 MustInherit Class Camera
     Public mainString As String
     'mainString = "main" 'ここでは与えられない
     MustOverride Sub Release() 'オーバーライドされる。というか何もない
 End Class
 Class subCamera : Inherits Camera
     Overrides Sub Release()
         mainString = "main"
         Console.WriteLine("subCamera Release")
     End Sub End Class 
'継承クラス
Class NormalClass
    Public Sub New()
 'Inherits継承ではコンストラクタはオーバーライドされないことを知っておく。<br>
        Dim newClassString As String
        newClassString = "NewClassString"
        Console.WriteLine(newClassString)
    End Sub
  Overridable Sub OverTest() '一文字が大文字
     Console.WriteLine("overTest normal")
  End Sub
End Class
Class KeishoClass : Inherits NormalClass
    Public Sub New()
        'Inherits継承ではオーバーライドされないことを知っておく。
        'そのため親ClassのNewも実行されるので子Classでは差分を書くこと
        Dim keisho As String
        keisho = "keishoString"
        Console.WriteLine(keisho)
    End Sub
    Overrides Sub OverTest() '一文字が大文字 オーバーライドした
        Console.WriteLine("overTest overRide")
    End Sub
Public Sub keishoFunc()
    Console.WriteLine("keishoFunc")
End Sub
End Class
Class SanshoClass : Inherits NormalClass
    '参照渡しの勉強 C言語ならポインタとかアドレスを使ったけどVBなのでBYREF,とかBYVALになる
    Public Sub sansho(ByRef x As Integer)
        x = 10 '参照なので値が変わる
    End Sub
    '値渡しの勉強
    Public Sub atai(ByVal x As Integer)
        x = 10 '値渡しなので値は変わらない
    End Sub
End Class