
防犯や防災時に役立グッズが多数 「備えて安心グッズのお店」
お得なわけあり商品を多数取り揃え 「訳ありお得館」
厳選デジタルグッズのお店 「おもしろデジモノのデジモノ屋」
厳選食品お取り寄せのお店 「まんぷく屋」
美と健康を考えるお店 「La beaut」
インポートエラー ― 2009年02月18日 09時59分01秒
入試の処理を行う際にはインポートやエクスポートの処理を頻繁に利用しています。
システムを作りこむのに時間がかかるのと、ネットワーク外で作業をしてもらうこともあり、エクセルで登録したデータをデータベースにインポートしたり、その逆があったりと言う状況なのですが、先日インポートの作業がまったくできなくなってしまいました。
ウィザードは機能していて、取り込みの直前まではいくのですが、いざインポートとなるとエラー画面が表示され、全くデータを取り込めない状態になっていました。
エクセルからCSVファイルに落としても状況は同じで何が原因かよくわからず、違うパソコンから試したりもしましたが同じでした。
正直原因が分からずどうしたものかと思いながら、
ふとファイル名を見てみると、ある事に気がつきました。
実は試験は1次試験、1.5次試験とあるのですが、ファイル名に1.5次という名前を付けていました。しかも「1.5」が半角になっていました。
半角のピリオドはまずいと思い、「1.5」と全角に変更して、もう一度インポートを行うと、あっさりインポートが完了!
どうやら半角のピリオドが原因でした。(^_^;)
わかってしまえば単純なミスなんですが、焦ってくるとなかなか見つけられないんですよね!
皆さんも気を付けてくださいね。
システムを作りこむのに時間がかかるのと、ネットワーク外で作業をしてもらうこともあり、エクセルで登録したデータをデータベースにインポートしたり、その逆があったりと言う状況なのですが、先日インポートの作業がまったくできなくなってしまいました。
ウィザードは機能していて、取り込みの直前まではいくのですが、いざインポートとなるとエラー画面が表示され、全くデータを取り込めない状態になっていました。
エクセルからCSVファイルに落としても状況は同じで何が原因かよくわからず、違うパソコンから試したりもしましたが同じでした。
正直原因が分からずどうしたものかと思いながら、
ふとファイル名を見てみると、ある事に気がつきました。
実は試験は1次試験、1.5次試験とあるのですが、ファイル名に1.5次という名前を付けていました。しかも「1.5」が半角になっていました。
半角のピリオドはまずいと思い、「1.5」と全角に変更して、もう一度インポートを行うと、あっさりインポートが完了!
どうやら半角のピリオドが原因でした。(^_^;)
わかってしまえば単純なミスなんですが、焦ってくるとなかなか見つけられないんですよね!
皆さんも気を付けてくださいね。
アクセスフォームで入力の制御 ― 2009年01月30日 13時03分57秒
アクセスを使って願書の登録用画面を作っているのですが、状況によって入力をしない項目がでてきます。
しかし、入力が必要ない項目であるにもかかわらず、入力してしまって時間のロスになることがあるため、条件によって入力できないように設定を設けています。
プロパティであれば、使用可能と言う項目で設定を変更するのですが、それではずっと入力できなくなり、意味がないので、プログラムで条件により変更するようにします。
「テキスト2」という項目の入力を制限する場合、
「me.テキスト2.enable」を「false」に変更します。
式は下記のようになります。
me.テキスト2.enable = false
テキスト0とテキスト2の項目があり、テキスト0が未入力の場合には、テキスト2を入力できないようにする場合のプログラムを作ります。
このプログラムは、「テキスト0」の「フォーカス喪失時」に作成します。
***************************************
if is null(me.テキスト0.value) then
me.テキスト2.enable = false
else
me.テキスト2.enable = true
end if
***************************************
簡単な記述ですが、これでテキスト0の内容によってテキスト2の入力を制御できるようになります。
使ったことのない方は一度お試しください。
しかし、入力が必要ない項目であるにもかかわらず、入力してしまって時間のロスになることがあるため、条件によって入力できないように設定を設けています。
プロパティであれば、使用可能と言う項目で設定を変更するのですが、それではずっと入力できなくなり、意味がないので、プログラムで条件により変更するようにします。
「テキスト2」という項目の入力を制限する場合、
「me.テキスト2.enable」を「false」に変更します。
式は下記のようになります。
me.テキスト2.enable = false
テキスト0とテキスト2の項目があり、テキスト0が未入力の場合には、テキスト2を入力できないようにする場合のプログラムを作ります。
このプログラムは、「テキスト0」の「フォーカス喪失時」に作成します。
***************************************
if is null(me.テキスト0.value) then
me.テキスト2.enable = false
else
me.テキスト2.enable = true
end if
***************************************
簡単な記述ですが、これでテキスト0の内容によってテキスト2の入力を制御できるようになります。
使ったことのない方は一度お試しください。
ADOでエラー ― 2008年09月09日 09時15分50秒
先日より、教務システムのサポートプログラムの変更作業をしています。
内容は定期試験の内容を表示する際、生徒の平均点、学級平均、クラスでの順位などの表示を追加するための修正です。
もともとこれらのデータは、それぞれ専用のテーブルに集計時に登録されるようになっており、今回は各テーブルから情報を抽出するだけのかんたんなものでした。
まず、それぞれの項目のテキストボックスを追加し、ADOでテーブルを呼び出して項目をセットするだけなので、大したことがないはずなのですが、なぜかエラーが起こってしまいました。
抽出の際、学籍番号、クラス番号、試験コードの3つを条件にしているのですが、試しに抽出する条件を1つにすると、エラーは起こらずデータを抽出しています。
抽出用のデータもきちんと入っているので、何が原因かよくわかりません。
最近何をやってもトラブルになってしまうなあと思いながら、ADOでの接続を中断し、DAOで接続を行ってみました。
DAOで抽出したら正常に動いたので、とりあえずこれで進めているのですが、あまり釈然としないので、落ち着いたら原因を調べてみようと思います。
内容は定期試験の内容を表示する際、生徒の平均点、学級平均、クラスでの順位などの表示を追加するための修正です。
もともとこれらのデータは、それぞれ専用のテーブルに集計時に登録されるようになっており、今回は各テーブルから情報を抽出するだけのかんたんなものでした。
まず、それぞれの項目のテキストボックスを追加し、ADOでテーブルを呼び出して項目をセットするだけなので、大したことがないはずなのですが、なぜかエラーが起こってしまいました。
抽出の際、学籍番号、クラス番号、試験コードの3つを条件にしているのですが、試しに抽出する条件を1つにすると、エラーは起こらずデータを抽出しています。
抽出用のデータもきちんと入っているので、何が原因かよくわかりません。
最近何をやってもトラブルになってしまうなあと思いながら、ADOでの接続を中断し、DAOで接続を行ってみました。
DAOで抽出したら正常に動いたので、とりあえずこれで進めているのですが、あまり釈然としないので、落ち着いたら原因を調べてみようと思います。
アクセスのラベル印刷2 ― 2008年08月05日 10時28分31秒
前回、アクセスでラベル印刷をするときに、開始位置を指定できるように設定を追加したのですが、この追加で新たに問題が発生しました。
と言うのも、プレビュー画面を表示させる時に、2回表示が出てくるのです。
しかも、そこから印刷する際にも開始位置を聞いてくるようになり、合計3回も開始位置を聞いてくるようになってしまいました。
これでは実用には耐えませんので、1度で済むように前回の内容を修正する必要が出てきました。
まず、なぜ3回も開始位置を聞いてくるのかですが、
フォームから、印刷プレビューできるようにボタンを配置しています。 そのボタンの中では、レポートを呼び出し、その後データのフィルター処理を行っています。
*************************
i = 0
k = inputbox("開始位置")
*************************
レポートを呼び出す時と、フィルター処理するときの両方に上の処理が呼び出されるようになっていました。
さらにプレビュー画面がら印刷する際にも呼び出されているため、合計3回も開始位置を聞いてくるようになってしまいました。
そこで、フィルター処理の時だけ、上の処理が動くように修正したいと思います。
まず、レポートに印刷フラグとして使うラベルを追加します。
「flg」と名前をつけて、「Caption」に「0」を入れておきます。
このままだと、印刷時に「0」が見えてしまうので、プロパティで「可視」を「いいえ」に変更して印刷されないようにしておきます。
*************************
Dim stDocName As String
stDocName = "label_print"
DoCmd.OpenReport stDocName, acPreview
Reports!label_print.Filter = Me.Filter
Reports!label_print.FilterOn = True
*************************
上はフォーム上のボタンで使われているプログラムです。
「label_print」というレポートをプレビューで開き、フォーム上で指定した、フィルター処理を行っています。
*************************
Dim stDocName As String
stDocName = "label_print"
DoCmd.OpenReport stDocName, acPreview
Reports!label_print.flg.Caption = "1"
Reports!label_print.Filter = Me.Filter
Reports!label_print.FilterOn = True
*************************
このプログラムに1行追加しました。 フィルター処理を実行する前に、レポートの「flg」の「Caption」を”1”に変更しています。
これで、レポートを開いた時とフィルターを処理するときのフラグの内容が変わるので、このフラグが”1”のときだけ開始位置用のinputboxを表示させます。
*************************
i = 0
k = inputbox("開始位置")
*************************
上の処理に追加していきます。
*************************
i = 0
If Me.flg.Caption = "1" Then
k = InputBox("開始位置")
Me.flg.Caption = "2"
Else
If Me.flg.Caption = "0" Then
k = 0
End If
End If
*************************
「flg」が”0”のときは、”k”に”0”をセットしています。 これは、レポートの詳細で登録したプログラム上でのエラーを回避するためです。
次に、「flg」が”1”のときに、開始位置を入力する用inputboxを登録しています。
その下で「flg」を”2”に変更していますが、これはプレビュー画面がら印刷した時に開始位置の登録をしなくて済むようにフラグの値を更新しています。
以上で3回表示されていた開始位置の指定を1度にすることができると思います。
もっとスマートな方法もあると思うのですが、とりあえずこれで現在は動かしています。
と言うのも、プレビュー画面を表示させる時に、2回表示が出てくるのです。
しかも、そこから印刷する際にも開始位置を聞いてくるようになり、合計3回も開始位置を聞いてくるようになってしまいました。
これでは実用には耐えませんので、1度で済むように前回の内容を修正する必要が出てきました。
まず、なぜ3回も開始位置を聞いてくるのかですが、
フォームから、印刷プレビューできるようにボタンを配置しています。 そのボタンの中では、レポートを呼び出し、その後データのフィルター処理を行っています。
*************************
i = 0
k = inputbox("開始位置")
*************************
レポートを呼び出す時と、フィルター処理するときの両方に上の処理が呼び出されるようになっていました。
さらにプレビュー画面がら印刷する際にも呼び出されているため、合計3回も開始位置を聞いてくるようになってしまいました。
そこで、フィルター処理の時だけ、上の処理が動くように修正したいと思います。
まず、レポートに印刷フラグとして使うラベルを追加します。
「flg」と名前をつけて、「Caption」に「0」を入れておきます。
このままだと、印刷時に「0」が見えてしまうので、プロパティで「可視」を「いいえ」に変更して印刷されないようにしておきます。
*************************
Dim stDocName As String
stDocName = "label_print"
DoCmd.OpenReport stDocName, acPreview
Reports!label_print.Filter = Me.Filter
Reports!label_print.FilterOn = True
*************************
上はフォーム上のボタンで使われているプログラムです。
「label_print」というレポートをプレビューで開き、フォーム上で指定した、フィルター処理を行っています。
*************************
Dim stDocName As String
stDocName = "label_print"
DoCmd.OpenReport stDocName, acPreview
Reports!label_print.flg.Caption = "1"
Reports!label_print.Filter = Me.Filter
Reports!label_print.FilterOn = True
*************************
このプログラムに1行追加しました。 フィルター処理を実行する前に、レポートの「flg」の「Caption」を”1”に変更しています。
これで、レポートを開いた時とフィルターを処理するときのフラグの内容が変わるので、このフラグが”1”のときだけ開始位置用のinputboxを表示させます。
*************************
i = 0
k = inputbox("開始位置")
*************************
上の処理に追加していきます。
*************************
i = 0
If Me.flg.Caption = "1" Then
k = InputBox("開始位置")
Me.flg.Caption = "2"
Else
If Me.flg.Caption = "0" Then
k = 0
End If
End If
*************************
「flg」が”0”のときは、”k”に”0”をセットしています。 これは、レポートの詳細で登録したプログラム上でのエラーを回避するためです。
次に、「flg」が”1”のときに、開始位置を入力する用inputboxを登録しています。
その下で「flg」を”2”に変更していますが、これはプレビュー画面がら印刷した時に開始位置の登録をしなくて済むようにフラグの値を更新しています。
以上で3回表示されていた開始位置の指定を1度にすることができると思います。
もっとスマートな方法もあると思うのですが、とりあえずこれで現在は動かしています。
アクセスのラベル印刷 ― 2008年07月31日 10時06分35秒
先日、事務のほうからアクセスでラベル印刷をするので、開始位置を調整できるようにしてほしいと依頼がありました。
アクセスのレポート機能を使い、ラベル印刷を行っているのですが、いつも先頭から印刷できるわけではないので、当然の要求ですね!
しかし、今まで行ったことがなく、ネットで調べてみました。 マイクロソフトのサポートサイトに情報が載っていたので、それを参考に作りました。
サイトに乗っていた情報はおそらくアクセス2003のものだと思うのですが、現在使っている2007でも同じようにできるようです。
ます、ラベルを印刷するフォームはすでにあるので、そのフォームに開始を指定する機能を追加していきます。
レポートのデザインを開きます。初期設定では、「レポートヘッダー/フッター」が非表示になっているのですが、表示させる必要があります。
アクセス2007で表示させる方法ですが、「配置」タブの「表示/非表示」の項目の中に、「レポートヘッダー/フッター」のボタンがあります。 一番右端にあると思いますので、クリックします。
クリックすると、デザイン画面の上下に「レポートヘッダー」と「レポートフッター」が表示されると思います。
まず最初に、「レポートヘッダー」をクリックして選択し、プロパティを開きます。
プロパティの「イベント」タブの、「フォーマット時」に「イベントプロシージャ」を指定し、VBAエディターを開きます。
まず最初に変数を登録します。
この変数は、共通でつかうので、「General」に登録します。
要は開いた画面の先頭に登録すればよいです。
*************************
Option Explicit
Dim i, k As Integer
*************************
登録したら、フォーマットのところにも登録します。
上で登録した、「i」と「k」の変数を設定します。
*************************
i = 0
k = inputbox("開始位置")
*************************
以上のように入力します。
これでレポートを印刷するときに開始位置を入力するための 画面が表示されます。
次はデザイン画面の「詳細」を選択し、プロパティを開いてください。
「詳細」のプロパティでも「フォーマット時」に「イベントプロシージャ」を選択し、VBAエディターを起動してください。
*************************
If i < k - 1 Then
Me.MoveLayout = True
Me.NextRecord = False
Me.PrintSection = False
i = i + 1
End If
*************************
以上のように入力します。
これで設定は完了です。
印刷プレビューで画面を開くと、最初にインプットボックスが開き、開始位置を入力するように促されますので、開始したい数値入力して、「OK」を押してください。
正しく設定されていれば、指定した場所から表示されていると思います。
今回はインプットボックスから入力しましたが、フォームに項目を作成し、前もって設定しておくことも可能なので、状況に応じて利用してみてください。
アクセスのレポート機能を使い、ラベル印刷を行っているのですが、いつも先頭から印刷できるわけではないので、当然の要求ですね!
しかし、今まで行ったことがなく、ネットで調べてみました。 マイクロソフトのサポートサイトに情報が載っていたので、それを参考に作りました。
サイトに乗っていた情報はおそらくアクセス2003のものだと思うのですが、現在使っている2007でも同じようにできるようです。
ます、ラベルを印刷するフォームはすでにあるので、そのフォームに開始を指定する機能を追加していきます。
レポートのデザインを開きます。初期設定では、「レポートヘッダー/フッター」が非表示になっているのですが、表示させる必要があります。
アクセス2007で表示させる方法ですが、「配置」タブの「表示/非表示」の項目の中に、「レポートヘッダー/フッター」のボタンがあります。 一番右端にあると思いますので、クリックします。
クリックすると、デザイン画面の上下に「レポートヘッダー」と「レポートフッター」が表示されると思います。
まず最初に、「レポートヘッダー」をクリックして選択し、プロパティを開きます。
プロパティの「イベント」タブの、「フォーマット時」に「イベントプロシージャ」を指定し、VBAエディターを開きます。
まず最初に変数を登録します。
この変数は、共通でつかうので、「General」に登録します。
要は開いた画面の先頭に登録すればよいです。
*************************
Option Explicit
Dim i, k As Integer
*************************
登録したら、フォーマットのところにも登録します。
上で登録した、「i」と「k」の変数を設定します。
*************************
i = 0
k = inputbox("開始位置")
*************************
以上のように入力します。
これでレポートを印刷するときに開始位置を入力するための 画面が表示されます。
次はデザイン画面の「詳細」を選択し、プロパティを開いてください。
「詳細」のプロパティでも「フォーマット時」に「イベントプロシージャ」を選択し、VBAエディターを起動してください。
*************************
If i < k - 1 Then
Me.MoveLayout = True
Me.NextRecord = False
Me.PrintSection = False
i = i + 1
End If
*************************
以上のように入力します。
これで設定は完了です。
印刷プレビューで画面を開くと、最初にインプットボックスが開き、開始位置を入力するように促されますので、開始したい数値入力して、「OK」を押してください。
正しく設定されていれば、指定した場所から表示されていると思います。
今回はインプットボックスから入力しましたが、フォームに項目を作成し、前もって設定しておくことも可能なので、状況に応じて利用してみてください。
最近のコメント