<Test>
ID___会員番号
1____1
2____2
3____3
4____4
<Test>
ID___会員番号
1____0001
2____0002
3____0003
4____0004
と、インポート後に一括変換する方法を2つ示します。
************************************************************************
回答1、更新クエリの利用。
************************************************************************
<クエリ1>
_______フィールド:会員番号
________テーブル:Test
レコードの更新:Format(会員番号, "0000")
_______抽出条件:
___________または:
[SQLビュー]
UPDATE Test SET 会員番号 = Format(会員番号,"0000");
*********************************************************************************************
回答2、SQL文実行関数の利用。
*********************************************************************************************
[イミディエイト]
? CnnExecute("UPDATE Test SET 会員番号 = Format(会員番号,'0000') WHERE LEN(会員番号 & '')<>4;")
True
もちろん、標準モジュールに、次のような自作関数を追加する必要があります。
多分、CnnExecute関数を使えば、一連の処理を自動化できるでしょう。
インポートもコードで実行していればですが・・・。
Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)
MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & CnnErrors.Description & Chr$(13) & _
"・Err.Number=" & CnnErrors.Number & Chr$(13) & _
"・SQL State=" & CnnErrors.SQLState & Chr$(13) & _
"・SQL Text=" & strSQL, _
vbExclamation, " ADO関数エラーメッセージ"
End Sub
Public Function CnnExecute(ByVal strSQL As String) As Boolean
On Error GoTo Err_CnnExecute
Dim isOK As Boolean
Dim cnn As ADODB.Connection
isOK = True
Set cnn = CurrentProject.Connection
With cnn
.Errors.Clear
.BeginTrans
.Execute strSQL
.CommitTrans
End With
Exit_CnnExecute:
On Error Resume Next
cnn.Close
Set cnn = Nothing
CnnExecute = isOK
Exit Function
Err_CnnExecute:
isOK = False
If cnn.Errors.Count > 0 Then
ErrMessage cnn.Errors(0), strSQL
cnn.RollbackTrans
Else
MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _
vbExclamation, " 関数エラーメッセージ"
End If
Resume Exit_CnnExecute
End Function
お礼
おはようございます。 早速のご回答ありがとうございます。 更新クエリ、SQL文実行関数、2つ実行させていただいたのですが、 「レコードでキー違反」のエラーが出てしまいます。 ご教授お願いします。