shohei blog

カテゴリー: 未分類

OpenOffice Base BasicでSQLクエリを送るときのコツ

・タイムスタンプをSQLに埋め込みたい時は変換する

Dim NowText as string

NowText = now()
NowText = Replace(NowText,”/”,”-“)

・接続はこんな感じ

Dim oDoc
Dim Connection

‘ フォームオブジェクト取得
oDoc = ThisComponent

‘ 接続を取得
oForm = oDoc.getDrawPage().getForms().getByName(“MainForm”)
Connection = oForm.ActiveConnection

‘SQLを発行する
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery(“SELECT “”HOGE”” FROM tbl_FugaFuga”)

‘ 接続を閉じる
ResultSet.Close()
Statement.Close()

中国(上海)でiPhone3Gを使う。

手元に何故かiPhoneがあってSoftBank以外のSIMも通信可能な場合。

今回チャレンジしたのは中国联通(China Unicom)の3GプリペイドSIM

これ、150元で100元分の通信料が最初からチャージされてた。でも本当は150元かどうか怪しい。

Chine Mobileのほうが良さそうだけど、たまたま入った店にあったのがこれだったので。

差し替えて再起動するだけで通信、通話は問題無し。SMSも使える。

国際通話はどうもそのままでは使えなさそうです。サービスセンターに電話すればできたかも…?

通信品質は、まぁ…日本でソフトバンク回線に慣れていたら耐えられるかも…。

とにかくどこにいてもビジーになる事が多いし片通話になってしまう事も多々あり。

ついでに10Mbyte程度で100元分を使い切ってしまったようです。China Unicomの看板のある店に行ってチャージ用のカードを買いましょう。滞在7日間で100元カードを2回購入。

以上簡単に紹介。

失業した

暇なうちにやりたい事一覧、仕事決まらないかしらー。

  • Z3のオーディオ置き換え→社外での取り付けキットがあるらしい
  • 一人で海外旅行、グアム行きたい。
  • 教員免許の申請(いい加減いけよ
  • 京都府教員採用試験(今いっても記念受験にしかならなそう
  • 痩せる!
  • この機会に大型4輪免許取得(お金が・・・)
  • 部屋の片付け
  • 個人で管理してるページをもうちょっと頑張る
  • Z3のアライメント調整・・・
  • XELVIS初号機のカウル修復(途中)

HTMLのテーブルタグを縦横入れ替える

某大手ECサイトというか楽天の一括更新はCSVなので必然的にExcelでやる羽目になる。
商品情報をなぜかテーブルタグで書いてたのでそれを縦横入れ替えたいときは下記のようなスクリプトを書けば一括ですね、という話。
Option Explicit
Sub main()
Dim SelectCell As Range
Set SelectCell = Range("g3")
SelectCell.Activate
While SelectCell.Value <> ""
If InStr(SelectCell.Value, "table") <> 0 Then
SelectCell.Value = ReplaceHTML(SelectCell.Value)
End If
Set SelectCell = SelectCell.Cells(2, 1)
SelectCell.Activate
Wend
End Sub
Function ReplaceHTML(str As String) As String
Dim pos_header As Integer
Dim pos_footer As Integer
Dim pos_tbl_header As Integer
Dim pos_tbl_footer As Integer
Dim header As String
Dim footer As String
Dim table_data As String
Dim table_body As String
Dim table_header As String
Dim table_footer As String
Dim table_body_th As String
Dim table_body_td As String
Dim temp As String
Dim title As Variant
Dim data As Variant
Dim i As Integer
'テーブルタグまでヘッダを検出する
pos_header = InStr(str, "<table")
header = Left(str, pos_header - 1)
'テーブルタグが終わった後のフッタを検出する
pos_footer = InStr(str, "</table>")
footer = Right(str, Len(str) - pos_footer - 7)
table_data = Mid(str, pos_header, Len(str) - (Len(str) - pos_footer) - pos_header + 8)
'Debug.Print "header------" & header
'Debug.Print "table-------" & table_data
'Debug.Print "footer------" & footer
pos_tbl_header = InStr(table_data, "<tr")
table_header = Left(table_data, pos_tbl_header - 1)
pos_tbl_footer = InStr(table_data, "</table>")
table_footer = Right(table_data, Len(table_data) - pos_tbl_footer)
'テーブルのTR的な部分だけを検出。
table_body = Mid(table_data, pos_tbl_header, Len(table_data) - pos_tbl_header - (Len(table_data) - pos_tbl_footer - 1))
'Debug.Print "テーブルのヘッダ部分" & table_header
'Debug.Print "テーブルのフッタ部分" & table_footer
'Debug.Print "テーブルの本体部分" & table_body
'<TH>部分を抜き出す
table_body_th = Left(table_body, InStr(table_body, "</tr>") + 4)
table_body_td = Right(table_body, Len(table_body) - Len(table_body_th))
'Debug.Print "Th部分" & table_body_th
'Debug.Print "Td部分" & table_body_td
title = Split(table_body_th, "</th>")
data = Split(table_body_td, "</td>")
For i = 0 To UBound(title)
title(i) = RemoveHTML(title(i))
Next i
For i = 0 To UBound(data)
data(i) = RemoveHTML(data(i))
Next i
For i = 0 To UBound(title) - 1
temp = temp & "<tr>"
temp = temp & "<th>" & title(i) & "</th>"
temp = temp & "<td>" & data(i) & "</td>"
temp = temp & "</tr>"
Next
ReplaceHTML = header & table_header & temp & "</table>" & footer
End Function
Function RemoveHTML(strHTML) As String
'HTMLタグを削除するファンクション
Dim Flg As Boolean
Dim i As Integer
For i = 1 To Len(strHTML)
If Mid(strHTML, i, 1) = "<" Then
Flg = True
Mid(strHTML, i, 1) = " "
ElseIf Mid(strHTML, i, 1) = ">" Then
Flg = False
Mid(strHTML, i, 1) = " "
ElseIf Flg Then
Mid(strHTML, i, 1) = " "
End If
Next
strHTML = Replace(strHTML, " ", "")
'Debug.Print strHTML
RemoveHTML = strHTML
End Function
Option Explicit
Sub main()Dim SelectCell As Range
Set SelectCell = Range("g3")SelectCell.Activate
While SelectCell.Value <> ""    If InStr(SelectCell.Value, "table") <> 0 Then        SelectCell.Value = ReplaceHTML(SelectCell.Value)    End If    Set SelectCell = SelectCell.Cells(2, 1)    SelectCell.ActivateWend
End Sub
Function ReplaceHTML(str As String) As String
Dim pos_header As IntegerDim pos_footer As IntegerDim pos_tbl_header As IntegerDim pos_tbl_footer As Integer
Dim header As StringDim footer As StringDim table_data As StringDim table_body As StringDim table_header As StringDim table_footer As StringDim table_body_th As StringDim table_body_td As StringDim temp As String
Dim title As VariantDim data As Variant
Dim i As Integer
'テーブルタグまでヘッダを検出するpos_header = InStr(str, "<table")header = Left(str, pos_header - 1)
'テーブルタグが終わった後のフッタを検出するpos_footer = InStr(str, "</table>")footer = Right(str, Len(str) - pos_footer - 7)
table_data = Mid(str, pos_header, Len(str) - (Len(str) - pos_footer) - pos_header + 8)
'Debug.Print "header------" & header'Debug.Print "table-------" & table_data'Debug.Print "footer------" & footer
pos_tbl_header = InStr(table_data, "<tr")table_header = Left(table_data, pos_tbl_header - 1)
pos_tbl_footer = InStr(table_data, "</table>")table_footer = Right(table_data, Len(table_data) - pos_tbl_footer)

'テーブルのTR的な部分だけを検出。table_body = Mid(table_data, pos_tbl_header, Len(table_data) - pos_tbl_header - (Len(table_data) - pos_tbl_footer - 1))
'Debug.Print "テーブルのヘッダ部分" & table_header'Debug.Print "テーブルのフッタ部分" & table_footer'Debug.Print "テーブルの本体部分" & table_body
'<TH>部分を抜き出す
table_body_th = Left(table_body, InStr(table_body, "</tr>") + 4)table_body_td = Right(table_body, Len(table_body) - Len(table_body_th))
'Debug.Print "Th部分" & table_body_th'Debug.Print "Td部分" & table_body_td
title = Split(table_body_th, "</th>")data = Split(table_body_td, "</td>")
For i = 0 To UBound(title)    title(i) = RemoveHTML(title(i))Next i
For i = 0 To UBound(data)    data(i) = RemoveHTML(data(i))Next i
For i = 0 To UBound(title) - 1    temp = temp & "<tr>"    temp = temp & "<th>" & title(i) & "</th>"    temp = temp & "<td>" & data(i) & "</td>"    temp = temp & "</tr>"Next
ReplaceHTML = header & table_header & temp & "</table>" & footer
End Function
Function RemoveHTML(strHTML) As String'HTMLタグを削除するファンクション
Dim Flg As Boolean
Dim i As Integer
For i = 1 To Len(strHTML)    If Mid(strHTML, i, 1) = "<" Then        Flg = True        Mid(strHTML, i, 1) = " "    ElseIf Mid(strHTML, i, 1) = ">" Then        Flg = False        Mid(strHTML, i, 1) = " "    ElseIf Flg Then        Mid(strHTML, i, 1) = " "    End If Next strHTML = Replace(strHTML, " ", "")'Debug.Print strHTMLRemoveHTML = strHTMLEnd Function

久々に

VBA書いたので残しておくw
Set ~思い出すのに3分かかったw

Sub main()
Dim SelectCell As Range

Set SelectCell = Range(“i2”)
SelectCell.Activate

While SelectCell.Value <> “”

SelectCell.Value = ReplaceHTML(SelectCell.Value)

Set SelectCell = SelectCell.Cells(2, 1)
SelectCell.Activate

Wend

End Sub

Function ReplaceHTML(str As String) As String

Dim pos As Integer
Dim str1 As String
Dim str2 As String

‘最初のTRまで検出する
pos = InStr(str, “</tr”)

str1 = Left(str, pos)
str2 = Right(str, Len(str) – pos)

str1 = Replace(str1, “<tr”, “<tr id=””st_head”” “, 1, -1, vbTextCompare)
str2 = Replace(str2, “<tr”, “<tr id=””st_date”” “, 1, -1, vbTextCompare)

ReplaceHTML = str1 & str2

End Function

ロードバイクのヘルメット

ロードバイク暦2日目。

やはり必要だということで購入。
Amazonで発注してしまった…

んで、フロントディレイラーがアウター側のときにリアがインにいくと音がする件が気になって調整してみたものの、先人にいわせると「仕様です」とのこと。
なんじゃそらー

明日は早起きできれば初通勤!