例によってVB2008でHamlog50.DLLとThdll2Vb.dllを使って、Hamlogデータの修正プログラムを作成しています。
今回のプログラムは、THW_updateでHamlogQSOデータを修正しようとするものですが、つぎのように一部のデータ項目が修正できません。
1.修正できない項目は、Hamlogのデータ項目名で表すと
My, Freq, Mode, Name, QTH, Remarks1, Remarks2の7項目です。
上記の各項目は、TextBox上でデータが変更されているにもかかわらず、データに変更がないときと同じ動作です。THW_updateの戻り値は SUCCESS = 0 です。修正時の確認画面は表示されません。
2.他のデータ項目の、Call, Date, Time, His, Code, G.L, QSLの7項目は正しく修正できます。修正時の確認画面も表示されます。
このプログラムのどこに問題がありましょうか。ご教示いただければ幸いです。
このプログラムでは、あらかじめHamlogから読み込んだデータをTextBoxに入れ、TextBoxのデータを修正した後、下のプログラムでHamlogQSOデータを修正しようとしています。
===================問題のプログラム============================
Dim DataTbl(14) As String ' 各QSOデータを格納
Dim th As TThLog
Dim th2 As TThLog
Dim Rno As Integer
Rno = Val(Me.TextBox15.Text) ' 修正対象データ番号を入力する
Hamlog_Update(th, th2, DataTbl, Rno) ' 修正プログラムの呼び出し
-----------------修正プログラム----------------------------------
Private Sub Hamlog_Update(ByRef u_th As TThLog, ByRef u_th2 As TThLog, ByVal u_DataTbl() As String, ByVal u_Rno As Integer)
Dim rd, sd As Integer, UpdateQsoData As String
rd = THW_read(u_th, u_Rno, 0)
u_th2.Qso = u_th.Qso ' 修正前のデータを格納
Text_to_Table_Set(u_DataTbl) ' 修正後のTextBoxのデータを配列に格納
For d As Integer = 0 To 14
UpdateQsoData = u_DataTbl(d)
SetThBuffer(u_th, UpdateQsoData, d)
Next
sd = THW_update(u_th, u_th2, u_Rno, IsQSOdata, 0)
If sd = SUCCESS Then
Me.Label3.Text = "データ番号 " & u_Rno & " 修正完了"
Else
Me.Label3.Text = "修正に失敗しました。"
End If
End Sub
---------------ここまでが修正プログラムです-----------------
以下の部分は上で使っているSubとFunctionの定義です
Public Function Item_Edit(ByVal Rec As String) As String
Dim RLeng As Integer
Dim Item As String
Rec = Rec.Replace(Chr(0), " ")
Rec = Rec.Trim
RLeng = Rec.Length
Item = Rec.Substring(0, RLeng)
Return Item
End Function
Public Sub Text_to_Table_Set(ByVal DataTbl() As String)
Array.Clear(DataTbl, 0, 16)
DataTbl(0) = Item_Edit(Me.TextBox1.Text.ToUpper)
DataTbl(1) = Item_Edit(Me.TextBox1.Text.ToUpper)
DataTbl(2) = Item_Edit(Me.TextBox2.Text.ToUpper)
DataTbl(3) = Item_Edit(Me.TextBox3.Text.ToUpper)
DataTbl(4) = Item_Edit(Me.TextBox4.Text.ToUpper)
DataTbl(5) = Item_Edit(Me.TextBox5.Text.ToUpper)
DataTbl(6) = Item_Edit(Me.TextBox6.Text.ToUpper)
DataTbl(7) = Item_Edit(Me.TextBox7.Text.ToUpper)
DataTbl(8) = Item_Edit(Me.TextBox8.Text.ToUpper)
DataTbl(9) = Item_Edit(Me.TextBox9.Text.ToUpper)
DataTbl(10) = Item_Edit(Me.TextBox10.Text.ToUpper)
DataTbl(11) = Item_Edit(Me.TextBox11.Text)
DataTbl(12) = Item_Edit(Me.TextBox12.Text)
DataTbl(13) = Item_Edit(Me.TextBox13.Text)
DataTbl(14) = Item_Edit(Me.TextBox14.Text)
End Sub