2014年7月10日木曜日

もう少しきれいにしたいんだがどうしたらよいのだろうか。

 ようやく Calc に入力したセルの値を取り出して SQL の WHERE の条件にしてデータベースからデータを取得することができた。
 具体的には型式から仕入れ価格を取得する。

 実行結果は以下のとおり。
 一行目が型式で二行目が仕入れ価格である。








 次は取得した仕入れ価格をセルへコピーすることと取得したデータがなかった場合の処理をどうするかだな。

 きれいにしたいのは実行した次のコードのことだったりする。

Sub Main

  Dim DatabaseContext,DataSource,Connection As Object
  Dim Statement,ResultSet As Object
  DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
  DataSource = DatabaseContext.getByName("DataBaseFile")
  Connection = DataSource.getConnection("", "")
  Statement = Connection.createStatement()

  Dim Sheet  As Object
  Dim SheetName As string
  Dim Cell As Variant
  SheetName = "見積り"

  dim const startgyou = 11 - 1
  dim const countgyou = 6 - 1
  dim const endgyou = startgyou  + countgyou
  dim const katasiki = 1
  dim const siirekakaku = 7

  Doc = ThisComponent
  if Doc.Sheets.hasByName(SheetName) then
    Sheet = Doc.Sheets.getByName(SheetName)
    for gyou=startgyou to endgyou
      Cell = Sheet.getCellByPosition(3, gyou).String
      ResultSet = Statement.executeQuery("select * from TestTable where katasiki = '" & Cell & "'")

      If IsNull(ResultSet) Then
        MsgBox "データがありませんでした。"
      Else
        ResultSet.next
        msgbox  ResultSet.getString(katasiki) & chr(13) & ResultSet.getString(siirekakaku)
      End If

    next gyou
  else
    msgbox "シート " & SheetName & " がありません。"
  end if

Statement.Close()
Connection.Close()
Connection.Dispose()

End Sub

0 件のコメント:

コメントを投稿

MELSECNET/HのリモートI/O局経由のMODBUS(R)通信について

http://fa-faq.mitsubishielectric.co.jp/faq/show/13661  別ネットワークの先にぶら下げるってどういうことだろう。