VPSサーバーにドメイン設定

さくらのVPSサーバーにLINUX CEMTOS7をいれて、apacheを起動させた。

ファイヤーウォールでwwwポートを開けて、apacheも自動起動させるように設定。

さくらのVPSサーバーにどうやってドメインをあてがうのか?不思議だったが、ドメインメニューからドメインを追加して、ゾーン編集するだけでOK

他社のドメイン管理している方のDNSは、さくらのDNSを設定する。

簡単設定ってところで、VPSサーバーのIPアドレスをいれて、ゾーン詳細設定でもIPアドレスをいれて、送信すれば完了です。

あとは、外からそのドメインでアクセスすれば、apacheの初期画面がみられる。

詳細はこちらのページを参考にした。

https://help.sakura.ad.jp/hc/ja/articles/206207381

Access ADO 非連結フォームからテーブルへの追加

Private Sub btn_納入処理実行_Click()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
rs.Open “dbo_details_outsourcing_running”, cn, adOpenKeyset, adLockOptimistic

rs.AddNew

※左側がテーブルの方で、右側がフォームの方

rs!外注手配番号 = Me!call_外注手配番号
rs!納品日 = Me!input_納品日入力
rs!納品数 = Me!input_納入数入力
rs!メモ = Me!input_メモ
rs.Update
MsgBox (“追加しました。”)

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub

Access ADO 非連結フォームへのデータ呼出

Private Sub 外注手配番号入力_AfterUpdate()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Set cn = CurrentProject.Connection
rs.CursorLocation = adUseClient
rs.Open “dbo_outsourcing_running”, cn, adOpenKeyset, adLockOptimistic

rs.Filter = “外注手配番号 like ‘*” & 外注手配番号入力 & “*'”

※上記の抽出はテキストの場合の抽出で、数値の抽出の場合は
rs.Filter =”外注手配番号=” & Me!外注手配番号入力

※日付型の場合も変わるので調べること。
参考: rs.Filter = “入社日=#” & Me!日付抽出 & “#”

Set Me.Recordset = rs
If rs.EOF Then
MsgBox (“条件に一致するデータは存在しませんでした。”)
With Me
!call_外注手配番号 = “”
!call_HNO = “”
!call_手順 = “”
!call_品名コード = “”
!call_品名 = “”
!call_型式 = “”
!call_担当行程 = “”
!call_メーカー名 = “”
!call_加工仕様 = “”
!call_加工費 = “”
!call_加工日数 = “”
!call_加工累計 = “”
!call_次工程 = “”
!call_手配数 = “”
!call_手配日 = “”
!call_納期日 = “”
End With
Else
With Me
!call_外注手配番号 = rs!外注手配番号
!call_HNO = rs!HNO
!call_手順 = rs!手順
!call_品名コード = rs!品名コード
!call_品名 = rs!品名
!call_型式 = rs!型式
!call_担当工程 = rs!担当工程
!call_メーカー名 = rs!メーカー名
!call_加工仕様 = rs!加工仕様
!call_加工費 = rs!加工費
!call_加工日数 = rs!加工日数
!call_加工累計 = rs!加工累計
!call_次工程 = rs!次工程
!call_手配数 = rs!手配予定数
!call_手配日 = rs!手配予定日
!call_納期日 = rs!納期予定日
End With

End If

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub

ホームページ カレンダー機能 datetimepicker

ホームページでカレンダー機能でフリーのdatetimepickerの使い方。

#######入力用HTML#######

<dt>希望日<span>Day</span></dt>
			<dd><input type="text" id="希望日" name="希望日" value="" readonly="readonly" /></dd>

#####################

###入力用JAVAスクリプト設定####

<script type="text/javascript" src="js/jquery.datetimepicker.js"></script>
<script>
	$(function(){
		$('#希望日').datetimepicker({
		timepicker:false,  ←この部分がオプションで、時計表示しない設定
		format:'Y.m.d'   ←この部分がオプションで、2017/03/30 表示に整形
		});
	});
</script>

#####################

SQLserver Accessでのテーブル追加 キー違反

オートナンバー付の、テーブルから、テーブルにテーブルのデータを追加すると、キー違反でエラーがでる。

オートナンバーが悪さをしていると勝手に思い込んでいたが、ほかのフィールドに含まれていたYesNo型。
Sqlserver では、bit型 これは、NULLが許可されない。つまり、すべてに 0 を書き込んで未チェック状態にしておかなければならない。

そこで、テーブル追加クエリにて、このフィールドに、0 を追加することで回避できた。

SoftetherVPN ポートの関係

普通にWindows10にソフトイーサクライントをインストールして設定すると、SKYPEが接続きれたり、インターネット接続が不安定になったりする。その原因を解消に役立つ情報を掲載する。

まず、ポートが、通常だと、443になる。
このポートは、結構使われているポートであり、SKYPEなども使っているポートなので不安定になるようだ。

なにで、サーバー側を、50000台のポートを解放して接続すると、クライアント側で、警告でNAT接続でしているよって通知がでる。それを調べると、不安定なこともあるとかないとか。

そこで、サーバー側のポートも解放して、クライアントから接続すると、そのメッセージもでなくなる。つまりは、NATを使わなくても接続が可能になったということだ。

次に、インターネット接続がおかしい。
VPN接続を切るとまともに表示がされる。VPNがいたずらしているらしい。

そこで、調べると、VPNプロジェクトの方に記載あった。
これをすればネットワークアダプタの優先順位が変わり解決するらしい。

以下転記

VPN Client の仮想 LAN カードに関する Windows のネットワーク接続設定の TCP/IP (IPv4) の設定を開いてください。
「インターフェイスメトリック」がデフォルトで「1」に設定されています。これを「1000」などの大きな値に変更すれば、物理的な LAN カードのほうの優先順位が高くなります。こうすれば、オフィスのプライベート IP アドレス宛のパケットだけが VPN 経由で流れるようになり、インターネットへのアクセスは自宅の物理的なネットワークを経由して行なわれるようになります。
なお、この問題を解決するために、VPN Client の接続設定における、「ルーティングテーブルの調整処理を行なわない」を有効にしてはいけません。これは効果がないばかりでなく、VPN 通信が大変不安定になる原因になります。この項目の意味がわからない方は、決して有効にしないでください。

スーパーセキュリティ

3OSのスーパーセキュリティを利用していたが、Windowsのファイル共有ができない。
なにやってもできない。調べても情報が無い中、固定観念を破ってやってみたらつながった。

ファイヤーウォールにて、「ファイル共有をブロックする」というところに、チェックが入ってないのが、ブロックしないとこと普通なら考える。

※ちなみに、全体のファイヤーウォールは、チェックが入っている方が、ONになっている。

つまり、ON状態が、「ファイル共有をブロックする」ってことだと通常なら誰しも思う。

しかし、結論から言えば、動作がが逆だった。ON状態にしないと、ブロックされて共有できないモードになっていた。

たぶん、海外製のものをソースネクストが買って販売しているのかと思いますが、逆なのは困る。

それから、クライアント側には、Windowsの資格情報を登録しないと共有フォルダを開けないので注意ですね。

Access トランザクション処理付きクエリの実行

トランザクションとは、一連の流れの中での処理でエラーが出た時に、すべてのデータを元に戻してくれる処理である。いままでは、クエリの数段重ねにて処理をすると、途中のクエリでエラーがでると、最初のクエリで変更されたデータと、後のクエリで変更されないデータがあり、おかしな状態で処理がストップすることになった。

それが、トランザクション処理をすることで、すごい便利になる。

サンプルは、Accessでクエリを作成して、SQLSERVERにリンクテーブルになっているテーブルを8段クエリで処理をしている例になる。

Private Sub 手配完了処理_Click()
Dim ans As Integer
Dim cn As New ADODB.Connection
Dim cmd As ADODB.Command
Dim stSQL1 As String
Dim stSQL2 As String
Dim stSQL3 As String
Dim stSQL4 As String
Dim stSQL5 As String
Dim stSQL6 As String
Dim stSQL7 As String
Dim stSQL8 As String

ans = MsgBox(“受注完了させる場合はOK、しない場合はキャンセルをクリック”, vbOKCancel)
If ans = vbOK Then

stSQL1 = “order_job01”
stSQL2 = “order_job02”
stSQL3 = “order_job03”
stSQL4 = “order_job04”
stSQL5 = “reset_outsourcing_order_before12”
stSQL6 = “order_job05”
stSQL7 = “reset_materials_order_before12”
stSQL8 = “order_job06”

Set cn = CurrentProject.Connection   #####この部分がなかなかどこにも掲載されてなかった。

Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
On Error GoTo ErrorHandler

cmd.CommandText = “BEGIN TRANSACTION”
cmd.Execute

DoCmd.OpenForm “job_wait”     #####この部分は、処理中のフォームが出るようにしたもの。
Forms!job_wait.Repaint

cmd.CommandText = stSQL1
cmd.Execute
cmd.CommandText = stSQL2
cmd.Execute
cmd.CommandText = stSQL3
cmd.Execute
cmd.CommandText = stSQL4
cmd.Execute
cmd.CommandText = stSQL5
cmd.Execute
cmd.CommandText = stSQL6
cmd.Execute
cmd.CommandText = stSQL7
cmd.Execute
cmd.CommandText = stSQL8
cmd.Execute

cmd.CommandText = “COMMIT TRANSACTION”
cmd.Execute

Set cmd = Nothing
cn.Close: Set cn = Nothing

DoCmd.Close acForm, “job_wait”
MsgBox “処理が完了しました。”

Else
MsgBox “処理を完了せずに元のフォームに戻ります。”
End If

Exit Sub

ErrorHandler:
cmd.CommandText = “ROLLBACK TRANSACTION”
cmd.Execute
Set cmd = Nothing
cn.Close: Set cn = Nothing
DoCmd.Close acForm, “job_wait”
MsgBox “エラーが発生しました。処理せずに戻ります。”

End Sub

Access フォームの再読込

アクセスのフォームに、SQLのViewなどで表示しているところに、非連結でデータ更新したあとに、再読み込みをしたい時がある。これがなかなか探しても出てこなかったので苦労をした。

結局

DoCmd.ShowAllRecords

を使えば再読込できた。

Access パスワードの生成

以前も掲載したが、あれは、何度も同じPWが出現してしまいバグがあります。

Sub Sample()
Dim i As Integer, j As Integer
Dim aChr(61) As String
Dim Pwd As String

For i = 48 To 57
aChr(j) = Chr(i)
j = j + 1
Next i
For i = 65 To 90
aChr(j) = Chr(i)
j = j + 1
Next i
For i = 97 To 122
aChr(j) = Chr(i)
j = j + 1
Next i
Randomize
For i = 0 To Minute(Time) * 60 + Second(Time)
j = Rnd
Next i
For i = 1 To 8
Pwd = Pwd & aChr(Int(Rnd * 62))
Next i
Range(“A1”).Value = Pwd
End Sub

のサンプルコードを掲載してくれた優しい方のものを修正して、5桁のランダム数字でPWを作成できるようにした。

Private Sub PW_Click()

Dim i As Integer
Dim Pwd As String

‘乱数系列を初期化
Randomize 100

For i = 1 To 5
‘0~9の範囲の乱数を取得して文字列として結合
Pwd = Pwd & CStr(Int((9 – 0 + 1) * Rnd + 0))
Next i

If IsNull(WID) Then
MsgBox “WID無い為、PW付与不可!”
Exit Sub
Else

If IsNull(WPW) Then
WPW = Pwd
Else
If MsgBox(“実行しますか? yes/no”, vbYesNo, “PW変更処理確認”) = vbYes Then
WPW = Pwd
End If
End If
End If

End Sub