VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Windows 64bit - Office 64bit - ACE 64bitならAnyCPU/x64でOK
Windows 32bit - Office 32bit - ACE 32bitならx86でOK
になってACEじゃどうにもならんはずだけどそうでもなかったっけ? あ、下段違う
Windows 64bit - Office 32bit - ACE 32bitならx86でOK
だ
Windows 32bit - Office 32bit - ACE 32bitならAnyCPU/x86でOKだな >>752
ACEの32ビットと64ビットが同居できない
.NETの問題じゃないのでどうにもできないな
OFFICEが32と64とで別なんだから、32ビット用と64ビット用分けるしかねえんじゃね
つか64ビットのACCESS使ってるとこ見た事ないけどな
>>760
Office(ACEドライバ) 64bit 使いたいって話じゃないのかね >>761
そう。
正にこれ。
実は作ってたのがVBEのアドインで、昔のAPIViewerみたいなのだったんで、Officeがインストールされてる環境が前提だった。
初めて.netで組んでみたけどコードの部分は感覚的に分かりやすいね。
元々似てるし。
http://imgur.com/9gzQbNy.jpg >>752
うちの会社のSEなら問答無用でAccessを32ビットに統一させるな
そもそも、7まではOSは32ビットにしろ!なのでOfficeも(64ビットOSでも)32ビット強制
まあ、そういう解決方法もあると言うことで 64officeだと32で開発したものが動かないからだろう 64bit版Officeにするメリットがあるかどうかだろ 不特定多数にバラ撒くアプリだと無理だけど
たとえばx32なOfficeの入ってる環境にx64のACEを強制インストする方法があったと思う AnyCPUなDLLにして、オフィスから呼んでもらうのはどうだろう
それならオフィスと同じビット数で動くんじゃね >>768
そういう認識も無く不特定多数にばら撒いて混乱するのがVB開発の醍醐味 昔のライブラリで、On Error Resume Next を前提にしたるCOMモジュールを扱うときなんかは、VB.netは便利。
C#でも似たような制御できればいいのに。 3次元配列A(x,y,z)をエクセルに
1シート毎にA(1,y,z),A(2,y,z),A(3,y,z)…としたいのですが、
1データずつ書き込むとすごく時間がかかるので、2次配列B1(y,z),A2(y,z)…の形で出力したいです。
この場合、二次配列の宣言文はどう書いたらいいのですか? 775ですが、わかりずらくてすみません。一次配列だとA(10)で10個の配列を宣言できますが、
二次だとA(10)(100,100)と書くと受け付けてくれませんでした。どのように書けばいいのでしょうか?
また、今は3次元配列から、1点ごと移して、1シート分ごとの二次配列を作ろうと思ってますが、
もっとスマートな方法があったら教えてください。 VB側であらかじめ二次元配列に変換すればいいでしょ >>777
そうなんです。VB側で二次配列に変換します。その時の二次配列名をA1,A2,A3…としたいのですが、
どうやって宣言したらいいのでしょう?個数は都度変わります。
>>778
ダメな理由は、私が超初心者だからです。Rangeオブジェクト、調べます。 Object型の二次元配列の配列は
Dim arr(n)(,) As Object
For i As Integer = 0 To n - 1
ReDim arr(i)(x, y)
Next >>779
VBAならコレクションで簡単に出来ると思う。どうしてもVB.Netでやらなければいけないならアレだが。
因みに、エクセルはシートに書き込む時ループじゃ遅くなるから二次元配列で
Range("A1").Resize(Ubound(2DArray,1),Ubound(2DArray,2)) = 2DArrayとやるとそこそこ高速に書き込める >>774
そうそう。
制御系のシステムとかでも、その時点でできることできないことがゴッチャになってるライブラリがある。
エラー前提でリリースされてるライブラリもあって、そういう前提だとResume NextがないとTryのブロック
記述がものすごく複雑になる。ぶっちゃけ、機械の挙動を、プログラムから先読みしないといけなくなる。
そういう前提のライブラリを利用するとき、いまVBはスタンダードじゃないけど、vb.netなら、VBと同じく、
Resume Next使えるからうれしい。 上の初心者です。お陰様で無事解決して先に進めました。
Do〜Loopで計算させて、ある数値の変化を見ながら中断。データをエクセルに出力、
その後また計算を再開させたいのですが。ボタンは、中断・再開・出力(終了も必要かも)
調べていたらBackgroudworkerっていうのが出てきたんですが、中断・再開、そして
その間にデータ出力って無理ですか?ほかの方法でもいいので教えて下さい。 繰り返し数値計算するプログラムを作って動くようになったんですけど、
途中でNaNが出てしまいます(NaNが出ても止まらない)
どうして出たのか突き止めたいのですが、どうやったらいいのでしょう?
デバッグのブレークポイントの設定でi=NaN,i==NaNとか入れてみたんですが、
式が良くないようで働きません。 vb.netとoracledbのプログラマが急に退職になったので、引き継ぎがないままで、私が保守をすることになりました。
15年前にVBを1つ作った経験しかないのに、任されてしまって、とても焦ってます。
vb.netとoracledbを基本から勉強をしたいのですが、いい入門書があれば紹介して頂けないでしょうか。
どうぞよろしくお願いします。 >>789
ちと古いが
VB.NETによるOracleアプリケーション開発技法 2005/4
山田 健一 (著)
俺も似た境遇でvb+oracleの開発をうん年前にするハメになったので
上記の本をアマで購入
でもトップが心変わりが激しいので開発は幸か不幸かお蔵入りw
で、odp.netをvb2013にインストールするんだけど
なぜかこれがなかなか入ってくれなくて手こずった記憶がある
上記の本(は古いから)よりネットのほうが情報あるんじゃね? すまん
こっちだったわ
Oracle+.NETプログラミング・バイブル―ODP.NETによる強力開発環境 単行本 ? 2005/9
日本オラクル (著) >>791
>>792
ありがとうございます。
早速、買って読んでみます。
古い本でも何でも勉強するしかありません。
10年以上前に導入したVB.netとoracledbのシステムらしいのですが
勉強やテストするテスト環境もありません。
SEもプログラマもいなくなったので誰にも聞けません。 >>791
>>792
もう少し教えてください。
この本に付属しているCDROMには、勉強するための環境一式が含まれているのでしょうか?
またそれらはWindows10でも動くのでしょうか?
Windows7もあるのですが、ハードディスクが30GBしかないです。
本は中古しかなかったので到着には1週間近くかかるようです。 >>794
CD-ROMは使わなかったな
環境はオラクルのホームページからdownloadしたよ(当時は要メール登録、無料)
なんかどれインスコしていいんか分からんかった記憶が…
環境はWindows8か8.1のVb2013
Windows10はわかりません
手さぐり状態の時に先にも書いたように鶴の一声でポシャったw 前に勤めていたスーパーの社長に新店オープンの検討会議に出るように言われ、なんで俺のような水産部担当者風情が
そんなのに呼ばれるんだろうと思ったら社長から「お前、面接でプログラミングが趣味って言ってただろ?POSシステム作れや」と
言われ目が点になった。「いえ、自分のはあくまで趣味程度でして」と言ったら「なんだ?嫌なのかぁ」と言われ困惑した。
スーパーのPOSシステムってのは東芝TECのほぼ独占状態で新店オープンなんかだと表現は悪いが吹っ掛けてくるらしく、
営業が一日張り付いただけで本来の料金の他に日当、メシ代、泊まりになった場合はホテル代まで持つのが業界の習慣らしく
300坪程度の店を出すのにPOSレジシステムの構築で一千万近くかかるとか。
それを従業員にやらせれば浮くじゃねえか、と考えたんだろうな。俺は「魚屋がシステム作ったらおかしいでしょ社長!」と逃げ回って
難を逃れたが(逆立ちしても無理っス)
元IBMの営業やってた総務の課長がやらされる羽目になり、開店時には従業員一同社長とこの元IBMを呪ったよWW
開店と同時にレジのおばはん達から「どれもこれも登録されてないじゃん!このバカ!」と怒号が響き、大笑いしていたら
水産物でも加工品のバーコード付きのものが全て「登録無し」と出るとババアどもからレーザービームを浴びて笑ってられなくなった。
元IBMの課長に文句言ったら「あはは、排他処理だよね、そうか、思い出した」とか言って平然としてるし。
神経が図太くねえとシステム担当なんてやってられないんだろうな >>796
昔、POS関連の仕事してたことが有ったけど、出来が良ければそのPOSアプリを一般に売れば良いんじゃね。
実際、蕎麦屋が自分の為に作ったPOSアプリ売ってたことが有った。
他にも全然開発会社じゃない所が自分用に作ったPOSアプリの出来が良かったので売ってる事例を幾つか見たことがある。 どう考えても「出来が良ければ」なんて言えない内容だと思うんだが どう考えてもコピペにしか見えんけどググても出てこないから
本当に書いてるんだな。
神経図太いって、それこんな開業も入れない文章書く奴のことだろw
それと、一応昔からTECの他にNCRって会社が大手であったはず。
今は普通にNECや富士通もWindowsやLinuxベースのPOSレジ作ってる
それから、ソフトはその元IBMのオッサンが作るとしてハードはどうしたんだよ。
そのオッサンがハードから作ったのかw
作れる訳ねえだろw
デタラメ書くにも程がある。 EPSONからプリンタとカスタマーディスプレイ買ってパソコンあれば出来る。
ついでに昔は制御方法も教えて貰えた。
他にもシャープとかカシオとかハードだけ買えた気がする。
あと、NCRは日本ではそれほど大手じゃなかった印象だな。
TEC、富士通、NEC、IBMの順ってのが俺の印象。
NCRはその次ぐらい。
あくまで俺の印象だし、今はどうなってるのか知らんけど。 cとJavaの開発経験があるけど、.NETで初めて開発刷ることになりました。だいたい3ヶ月やれば開発に参加できますか? それはあなた自身の学習能力とチームが求める能力の関数でしょう こんな答えようのない事を他人に尋ねてくる上に、文章の推敲も出来ないやつは
ハナっから開発メンバーに入れたくないな>>803 >>803
ドットネッターて>>804,805みたいな無能ばかりだから3ヶ月どころか3時間あればエースプログラマーになれると思うよ 質問失礼します。
現在、SQLserverからDataReaderにテーブルデータを取得してDataGridViewにテーブルデータを表示させているものがあります。
DataGridViewではなくExcelに出力させて欲しいという要望があり、対応しようとしているのですが、DataRederの内容を2次元配列に入れる事が出来ず困っています。
やりたい事
DataReaderの内容を2次元配列に格納し、指定したExcelファイルに一括で書き込み。
よろしくお願いします。 datatableから出力させた方が楽なんじゃないかな。。 >>811
申し訳ありませんが、やり方を教えて下さい。
現状のコードは
datareader=command.ExecuteReader()
While datareader.read
‘データグリッドビューへ出力
End While
なのですが、AdapterとDatasetを作ってDataTableに格納して、Excel出力するイメージですか? dataadapter.fill(datatable)じゃダメなの >>811
>>813
ありがとうございます。希望通り動作させる事が出来ました。
また、よろしくお願いします。 visualstudio2013、.net4.6で、ZipFileクラスは出るのにZipFileExtensionsクラスが出てこないんですが原因わかりませんかね?
参照にSystem.IO.Compression.FileSystem は追加してます。 EditorBrowsable 属性で Never が指定されているからインテリセンスには出てこない
ZipFileExtensions と入力した後に . (ドット)を入力したら出てくるけど、拡張メソッド提供用のクラスなので、
dim archive as ZipArchive
archive.CreateEntryFromFile ( ... )
みたいに拡張メソッドとして使用したほうがいい 約10数年ぶりにこのスレに戻ってきた…
実に.NET1.1以来…
pingクラスを非同期「Ping.SendAsync」で使ってインターネットの速度低下を計測したくて
タイムアウトでイベントを拾いたいんだけど
タイムアウトの時間を20msにしてもタイムアウトイベントが起きない
イベントがcompleteで帰ってくるので21ms以上かかっても正常で戻ってくる
ちなみにdobonでサンプルを参考にした
タイムアウトイベント拾えたひといたらお知恵拝借したい >>817
https://msdn.microsoft.com/ja-jp/library/ms144961(v=vs.100).aspx
> timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。
これじゃない? >>818
早速サンクスです
どうもこれが原因っぽいですね…
100ms超えるようだとログに残したかったので
毎度応答時間チェックしてみることにします
私事だけどWindows10で.NET1.1が動かないから
昔作った業務アプリを作り直さないといけない…
クリレポ動くんだろうか… >>816
そういうことだったんですね
ありがとうございます
勉強になりました 暗黙の型変換の挙動ってどこで制御しているんでしょうか
decimal d = 1
String s = "hoge "
s = s & d
この時のdって暗黙の型変換?がされていると思うのですが、
decimalの実装を見てもどこでこの挙動が制御されているのかわかりません Option Strict のこと?
ttps://msdn.microsoft.com/ja-jp/library/dd314347.aspx
あとはアンパサンドオペレーターあたりじゃない?
ttps://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/concatenation-operator 雑魚プログラマなんだけどプロパティについて聞きたい
普通↓の@の形式だと思うんだけど
似たようなことしたいときにAとかBの形式より@が良いの?
@----------ここから
メンバ変数 _A
プロパティ A
’_Aをsetとgetする処理
@----------ここまで
A----------ここから
メンバ変数 _A
プロシージャ setA(引数B)
’_Aに引数Bを代入する処理
ファンクション getA
’_Aを返す処理
A----------ここまで
B----------ここから
プロパティ A
プロシージャ setA(引数B)
’Aに引数Bを代入する処理
ファンクション getA
’Aを返す処理
B----------ここまで プロパティを宣言すると、コンパイラは中間言語にgetterとsetterのメソッドを作る。だから意味ないです。普通の?の形式を使えばいい。 >>821
暗黙の変換やってるのはコンパイラじゃね
>>827
定義するのを(定義)切るとか言うことがあるなぁ。変数切るは変数定義するってことだな
通じる人のほうが多い気がするけど、おっさんだけかもしれんw
語源はしらん >>829
では変数の宣言と定義の違いを簡単に説明してくれ >>830
コンパイラのために行うのが宣言
リンカのために行うのが定義
分かれてない言語の場合は宣言と定義を一度に行う >リンカのために行うのが定義
ピンとこないな
アロケーションとは違くて? >>822
ありがとうございます
アンパサンドオペレーターでできるかと思ったのですが、
Stringは継承できないしdecimalは構造体だしでダメっぽいです
諦めました >>833
何言ってるのかよく分からんけど、.NETのオブジェクトはすべてToStringメソッドを持ってるので、
s &= d
は
s &= d.ToString
と同じ、これはC#でも同じ &をオーバーロードして、
s &=d だけで s &= format(d, "0.00###")
みたいな挙動をさせるのが目的でした
今は確認できないのですが、ToStringをオーバーロードすれば出来るのか後ほど確認してみます
ありがとうございます >>835
そんなこのできないと思うけどできたとしてもやらない方がいいと思うよ。
コードを読む立場になって考えてみ?
s &=d
が実は、
s &= format(d, "0.00###")
と同じ働きをするって普通は誰も思わないからそのコードを読んだ人(数か月語の書いた本人含む)
は絶対混乱するよ よろしくない方法だというのは承知しつつ個人用なのでやってみるつもりでした
とはいえそもそも出来ないようで
Stringクラスが継承不可になってるのはそういうのまで考えられてるのかな それはdの方を独自クラス(構造体)にすれば良いんじゃね
継承出来ないようなら暗黙的に変換できる型を作れば良いんじゃね ちょっと文字数減らすために変な小細工しない方がいいと思うよ
こんなのせいぜいマジックストリングを無くす程度で十分でしょ
Const DecimalFormat as String = "0.00###"
....
s &= d.ToString(DecimalFormat) >>834
ちょっと気になったんだが、VB.NETの暗黙の型変換で呼ばれるのは、CType関数じゃないかと
暗黙の変換はStringに限るわけじゃないから、StringのときだけToStrring呼ぶような事はないんじゃね
CTypeは値に忠実に返すべきだが、ToStringは説明的な文字列付加するとかあり得る話だし >>840
あ、VBの&はC#の+演算子と違って自動的にToString呼ばれないみたいだね。
文字列&hogeの場合はhogeにStringへの暗黙変換が定義されてないとダメなのか
変なところでVBの方が厳しいな
https://msdn.microsoft.com/ja-jp/library/k1a63xkz(v=vs.100).aspx
https://msdn.microsoft.com/ja-jp/library/wfx50zyk(v=vs.100).aspx 勢いで>>838実装してみた
https://ideone.com/l0VRiT
ideoneってVB.NETの動作なんだか怪しいな
バージョンの新しい方はなんだか動かないし、古い方は自動実装プロパティ使えねぇ
一応言っとくけど、たんにDecimalの表示時にフォーマット指定がめんどくさいとか
その程度の理由でやるような事じゃないからな
じゃあ夜中に何やってんだ俺w >>841
VBの&は文字列連結専用の演算子だからな
実はVBでも+で文字列連結できる
その場合の数値加算か文字列連携かの判断と実行内容がC#と同じかはしらん
まあ、暗黙の変換は予期せぬ結果をまねきかねんから注意しろってことだな 退位の話題がニュースにあったんだけど
.NET1.1で新元号のアップデート来るかな… >>844
元号ってOSから引っ張ってきてるんじゃないかなぁ
OSが対応されればそれで行ける気がするけど、1.1動くOSってどこまでだっけ
未だに1.1のシステム抱えてる身としては他人事ではない >>846
Windows10は1.1が動かない(とされてる)
業務ソフト納入してる客先でPC機器類納入してる別の会社が勝手にWindows10に変えようとして
慌てて一台リースを延期してもらった
>>847
2.0でビルドしたものが4.0で動いたというのが興味深い 2.0以降はいちおう上位互換考慮されてるはずだからなぁ
OSもフレームワークもサポート切れだから、アプリもサポートできません
アプリバージョンアップしてください(もちろん有償で!)
こう言って通れば良いんだがなぁ コマンドプロンプトで実行するプログラムで、C言語のsystem()関数と同様の関数ありますか。
Processクラスは別画面で起動します。同じ画面で実行したいもんで。 >>851
UseShellExecute = False にしてみたら? Class clsMai
Public Text As String = ""
Public size As Integer = 0
End Class
Dim lm As New List(Of clsMai)
このとき
dim sum as integer = 0
dim dt as new clsMai
dt.text = "aaa"
dt.size= 10
lm.add(dt)
lm.sum += dt.size
最初はListだったんだがSumが追加したい。こういう時にはlmはどういうように定義するのがいい? Class clschkMai
Inherits List(Of clschkMaisu)
Public sum As Integer
End Class
これで
lm.add(dt)とやるだけで上記のlm.sum+=dt.sizeも行うようにしたいのだがやり方が分からない。 >>854
List<T>を継承じゃなくて中に持つクラスを作るだけでしょ。
あるいはsumを頻繁に使うのでなければ、LINQのSumを使った方が簡単
それと今時変なハンガリアンやめなはれw
Claass MaiList
Private _list as New List( Of Mai)
Private _sum as Integer = 0;
Public Sub Add(x As Mai)
_list.Add(x)
_sum +=x.size
End Sub
Public Property Sum as Integer
Get
return _sum
End Get
End Property
End Class おお!! そういうことか。ありがとう。 addがOverridesできないものかと悩んでた。
clsXXXって書き方は駄目なのか? 何か不都合があるんだろうか? アッ、駄目だ。継承しないとlm(3).textのようにインデクサでのアクセスができない。 >>857
インデクサ(VBは既定のプロパティと言うと思うけど)も自分で書けばいいんだよそれはwww
簡単でしょw
何でこの程度のことを思いつかないのw それはできないでしょ。 lm.lst(i).text みたいになってしまうから。これは面白くない。
lm(i).textにしたいわけだ。 ■ このスレッドは過去ログ倉庫に格納されています