VBScriptについて必死に話し合うスレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>140
ありがとう
呪文にしか見えん…
ちょっと調べながら解読してみる… >>142
スペル間違ったcreateobjectね ____/ ̄ ̄
/ │ ̄\__ ゴゴゴ・・・
/
.. 、 ,_
 ̄\_/ ̄ ̄\/ ̄ ゴゴゴゴゴゴ・・・
___/ ̄へ√⌒l⌒´ ̄ ̄\_
´ / \
_ ./ ̄ ̄ ̄\ /
__ `ソ/ ─ ─ \/ ̄/
\/゚ (●)。 (●) \/ rへ,ノ ・・・・・・
__>-へ| i (__人__) |ノ :.\_
.:/从へ、.゚` ⌒´o.ノ从rーヘ_
_::ノ :ノ`⌒Y⌒´:: \
.::┘ :│ ゚ >>142 です
>>140 の人丁寧に教えてくれたけど全然分からなかった…すまん…
CSVの読み込みにCOPYが使えるってのを見つけて試そうと思ったんだけどファイルの先頭3行に必要ない行があるからskipを使ってコード書いたけど実行すると”skip”付近で記述がおかしいみたいなエラーが出る
これ何かおかしい?
Sql = "COPY datatest FROM 'C:\\FTP_Test\\LOG01\\00006401' skip 3; " ピラフの雰囲気だとなんでもエクセルとVBA使ってそうだけど >>152
ピラフ貧乏だからエクセル持ってないの! >>151
ポストグレスの重要機密文書見たけどskipは載ってなかったよ
skipオプションは使えないんじゃないかな
https://www.postgresql.jp/document/9.3/html/sql-copy.html
テキストエディタでサクッちゃいなよ
やっちゃえエディタ >>154
skipないのか…
>>140の人がレスくれた内容がこの辺かな?
http://bayashita.com/p/entry/show/85
これを
読んだ一行は、カンマでSplitして文字列はダブルクォーテーションで囲んだりしながらvalue部分作成
あとはあらかじめ用意したSQLにくっつけて実行
って全然イメージ付かない…
1行ずつよんだ結果は上のサイトで言う所のstrLineに入ってるって理解で良いのかな?
この変数の中身をどう分解すれば良いんだ?
聞いてばっかりでごめん >>155
strLineには1行ずつ読んだ結果が入ってるよ
Split関数を使ってカンマで切って配列に変換すればいいよ
Dim values
values = Split(strLine, ",") >>156
ありがとう
CSVの列の数とテーブルの列の数が同じなら下の書き方で上手くインサートできる?
INSERT INTO test
(aaa,bbb,ccc)
VALUES
(values) >>157
数も順番も同じなら、テーブル名も省略できるよ “今日の日付のファイル”を読み出すって場合はどういうコードになるの?
日付を付加するとかはあるけど探して読み出すっていうのが見つけられなかった >>159
どこに日付が有るの?
ファイル名なのか、作成日付なのか変更日付なのか
ただ日付と言われても誰も解らないよ >>160
ごめん
読みだしたいファイルに日付が付加されてるんだけど(20171217みたいな感じ)、今日の日時が付いてるファイルのみ判別して読み出すっていうのがやりたい >>162
日付はファイルを作成した日時が付加されてる
今はパスに対象のファイルを指定してるから読み出したり出来てるんだけど、日付の指定で読み出し対象を変えたいなと思ったんだ >>162
パス名に一定の規則に基づいた日付がついていて、かつその日付を信頼して制御してOKなら、InStrとかReplaceを使ってパスを検索すれば良い
実際のファイル作成日や最終更新日を考慮しなければならないなら、FileSystemObjectとかを使ってFileのプロパティを調べて検索するべし >>162
ワイルドカードとかの指定は出来ないので
ファイル名を読み出して判定してからオープンする必要がある
sdate=replace(date,"/","")
set ofo = fso.GetFolder(folder)
とかでフォルダー取得して
For each ofi in ofo.files
でファイル一つずつ読み出し
if instr(ofi.name,sdate) <> 0 then
ファイル読み出し、DB書き込み処理
end if
こんな感じかな / ̄ ̄\
/ \
|::::::: : | , ノ.
. |::::::::::::: | 'ヽ (
|::::::::::::: | ) )
. |::::::::::::::: } ` ノ
. ヽ____ } ( ,ノ'  ̄
r'ニニヽ._\. ノ ;;.
r':ニニ:_`ー三`:く._ [l、.
/: : : : : : :`,ニ、: :_:_;> /,ィつ
. /: : : : : : : : / : : : ヽ\ ,∠∠Z'_つ
| : :.:.:.:.:.: . :/: : : : : : l : ヽ. / .r─-'-っ
. |:.:.:.:.:.:.:.:.:.,' ''" ̄: : :l: : : :l / ):::厂 ´
|:.:.:.:.::.:.:.:l -─-: : /:_:_:_:_l / ̄`Y´
. |:.:.::.:.::.::l.__: : : :/::: : : : :l/⌒ヽ: :〉
|::.:::.::.::l: : : : : : /:::: : : : : |: : : : ゙/ >>165
>>162です
見ながらやってみたんだけどわからなかった・・・
日付を判定する元にしてるのがsdateかなと思って中身見ようとCall MsgBox(sdate)ってやっても今日の日付が表示されないのはsdateには今日の日時が入ってないからなのかな?
あと、if instr(ofi.name,sdate) <> 0 then の文のinstrの意味って検索が一致した文字の位置を返すって役割って理解であってるかな?
if instr(ofi.name,sdate) <> 0 then この文の意味がよく分からなくて・・・
見ながら書いたコードなんだけどもう少しっぽいのに分からない・・・
Dim objFileSys
Dim objFolder
Dim objFile
Dim sdate
Dim a
Set objFileSys = CreateObject("Scripting.FileSystemObject")
sdate = Replace(Data,"/","")
Set objFolder = objFileSys.GetFolder("c:\Filedate")
For Each objFile In objFolder.Files
If instr(objFile.Name,sdate)
Next >>170
dataじゃなくてdateね
Dim objFileSys
Dim objFolder
Dim objFile
Dim sdate
Dim a
Set objFileSys = CreateObject("Scripting.FileSystemObject")
sdate = Replace(Date,"/","")
Set objFolder = objFileSys.GetFolder("c:\Filedate")
For Each objFile In objFolder.Files
If instr(objFile.Name,sdate) <> 0 then
end if
Next >>171
ありがとう
綴りを間違えてた…
本当に馬鹿な質問で申し訳ないんだけど
If instr(objFile.Name,sdate) <> 0 then
で今日と判別されたものはどこに入ってるの?
例えば今日の日付のファイルをデータベースに処理するとして、ここで判別された物がファイルのパスにしたり出来るのかなって思ってるんだけど理解間違ってるかな…
確認しようと中身をメッセージボックスに出してみようと思ったんだけど( )の中身はなんて指定すれば出せるかな
Set objFileSys = CreateObject("Scripting.FileSystemObject")
sdate = Replace(Date,"/","")
Set objFolder = objFileSys.GetFolder("c:\Filedate")
For Each objFile In objFolder.Files
If instr(objFile.Name,sdate) <> 0 then
Call MsgBox()
end if
Next >>173
ありがとう
途中でメッセージボックス出してファイルの名前だったり中身のデータも取得できた
みんな丁寧に教えてくれてほんとにありがとう $folder = "c:\Filedate"
# yyyymmdd
$today = Get-Date -Format "yyyyMMdd"
# 日付を含んだ
$filter = "*" + $today + "*"
$file = ls -File -Path $folder -Filter $filter
# 読み込み
Get-Content $file
PowerShell で書いた。
PowerShell, PowerShell_ise で実行して 修正
Get-Content では、相対パスでは、作業フォルダの場所次第で、動かないことがあるから、
絶対パスにしておいた方が無難
># 読み込み
>Get-Content $file
# 読み込み
Get-Content $file.FullName 文字列 "平成29年12月18日" をDate型に変換したいのですがどうやればいいですか
教えてくださいお願いします "平成29年12月32日" のように不適切な日付の場合はアラートを出したいです
よろしく教えてくださいよろしくおねがいします >>140-141
CSVの読み込み時に一律で Split(Line, ",") するのは勧めない。CSVの仕様的に正しくない。
「"」でくくられて「,」を持つフィールドを正しく取得できない。
良い機会だから、トークン切り出しクラスを実装してみたら?スキル上がるよ。
>>165
これくらい単純な事には、Execオブジェクトに dir /a-d /b させて StdOut をもらった方が楽。
ワイルドカードが使えるし。 >>179
「昭和80年」のような場合はどうすんのよ? >>180
そんなクラス作るくらいならADOでいいよ
execとかは楽かもしれないけど美しくないな >>182
CSVをmdbあたりに突っ込んでから再度取得する感じ? >>183
テキストクラスで直だよ
読み出しはDBと同等に出来る
書き込みできないけどね >>181
NGになって欲しい
なぜならば平成しか来ない想定だから 間違えた。
>>185 は >>184 ね。
ADO にそんなのあんの? >>187
テキストドライバがあるよ
ODBCドライバかOLEドライバかACEなんとかで提供されてるはず VBSは正規表現が使えるから、文字列から数字をパターンマッチで取り出して、
後は、数の範囲を確認する。
西暦や和暦では月は1〜12であることはわかるね。各月の日数は月によって異なる。
カレンダー見ればだいたいわかるね。ただし、うるう年では2月は29日になる。うるう年の判定方法は検索して。
年号はデータを用意するしかない。 >>184
追加はできるんじゃなかったかな
超絶遅いけど >>186
法律上は
明治45年7月30日と大正元年7月30日は同じ日
大正15年12月25日と昭和元年12月25日は同じ日
だからどちらも入力として受け付けるってことでいいのか? >>189
日本語で言われても全然わからない
VBScriptランゲージでどうぞよろしくお願いいたします >>191
平成だけで良いです
明治も大正も昭和も仕様に含めない方向で >>188
見つかった。こんなのあったのね…。
場合によっては使えるかな…。 >>190
insertは出来なかったはず
insertの変わりに普通にWritelineで追記してた >>195
うそーうそーうそー
ちょっと明日起きたら試してみる 毎年のことだが、1月は31日あり、2月は28日か29日あり、3月は31日あり、4月は30日あり、5月は31日あり、6月は30日あり、7月は31日あり、
8月は31日あり、9月は30日あり、10月は31日あり、11月は30日あり、12月は31日まである。 >>193
ちうことは…
1. フォーマットに従ってなければはじく。
2. 存在し得る日付かどうかを調べてはじく。
3. 合格したら西暦変換して出力
大体こんな感じ…だけどおまいさんなら楽勝で作れるでしょ。
今日は寝る。 >>194
CSVファイルの読み込みはイレギュラーケースがExcelとテキストドライバーで違ったりしてて
正しいものだけ読めれば良いですってことなら使えるのだろうけれども
Excelと同じ結果を得たいとか、不正なデータがあったらアラート出したいとか
そういう要求があるとパーサこしらえなきゃいけなかったりするんだよね
どこまで細かく見ますかってことになろうかと >>198
1.は正規表現でイケると思うの
2.はどうやるの?
3.もお願い
以上、よろしくお願いします >>197
できそうですか!?よろしくお願いします!! カンマ区切りのCSV よりも、タブ区切りのTSV の方が良い
でも、TSVでも、データ内にタブを使わないように。
タブは、区切り文字のみに使うこと
>>178-179
そもそも、日本の和暦に対応している、OS のAPI があるのかな? >>202
わからぬ、だがピラフはそれを欲しい、作ってくれるか? >>199
そこは同意だなぁ。
>>202
APIはあるけどVBScriptからは叩けない。 PowerShellで日付をチェックする
https://lightgauge.net/powershell/3742/
西暦なら、PowerShell でチェックできる 大昔に、帳票アプリを開発した際は、
和暦年号の始まり・終わりの年月日を、DB (またはファイル)に入れておいて、
新しい年号も、DBへ追加することで、対応できるようにしていた On Error Resume Next
DateValue("平成29年12月18日")
Call MsgBox(Err) >>207
13って表示されました
これは不吉な証拠だと思います CSVをADODBで読み込んでみようと思ったの
64bitではACCESSの何かをインスコしないダメみたいなの
仕切りが高いと思います >>210
ごめんこっちだった
https://www.microsoft.com/ja-jp/download/details.aspx?id=13255
再配布可能モジュールだからどこに入れても問題ないけど
AccessDatabaseEngineだからactuallyといえばAccessかも >>215
以前、おまいさんのコード見たけど、コーディングスタイルが変化してんのな… >>217
…と来ると思った。
その進歩の無さがこのスレを支えているのかも知れないな。
VBScript は「間違った、VB的な」ハンガリアン記法を敢えて使った方がいい場面があるのだが、まだ分からないのか…。 あと、あれだ。
「面倒だから書かない」と「面倒だけど書くべき」場面の区別が付いてない。
自分だけが使う使い捨てコードならともかく、意志のないコードを人様に見せたらいかんよ。 ま、ネットにコードをアップするくらいならコピペ元のURLを貼ってくれた方がエコなのでそっちを勧める。 間違ったハンガリアンはとてもすごいんだとみんなに使ってもらいたいんだという
強いお気持ちをお持ちになっておられるのが伝わってきました
書かないべき書くべきところの区別が自分はついているんだと
自分ならこれを書くのに自分ならこれを書かないのにという思いを抱いておられることも
痛いほど伝わってきました
記法なんて好きにすればいい人それぞれ違っていいんだと
ピラフは思うけれどもそこまで強い思いがあるんだったらみんなに実物を見せるのがいんじゃないかな
これが自分が思う最高のコードだとバシーンと出したらいんじゃないかな ピラフは他人の意見に耳を貸せるような人間じゃないからね ピラフのコードに言いがかりつけてるだけじゃん?
それってただのマウンティングだと思うしゴリラだと思うの
こうやったがいいと思うのならそれを出すべきだと思うんだよね
ピラフに文句言うんじゃなくて、自分ならこう書くってのを堂々と示すべきだと思う
それが本当に良い物ならみんな真似すると思うし有益だと思う
たとえ良くないものだったとしても自分の意見を主張したんだから価値あることだよ
他人を貶めてるだけじゃダメ、ゴリラから進化するべき >>226
いつでもお耳貸すよ、ピラフのかわいいお耳貸したげるよ
賛同するかどうかは別として意見を聞くことは嫌いじゃないよ
自分の意見に賛同しないからこいつはダメだというのは支配者の考え方
北の黒電話さんのやり方
自分はこう書いてるなぜならばこういう目的があってそこにはこういう背景があって
こういう手段を検討したうえでっていうのが意見だと思うんだよね
整然とした論理展開があると説得力を感じるよね
意志のないコードとか人様に見せたらいかんとかはポエムチックな感情の垂れ流しかなと 何か言われればとにかく理屈をこねて茶を濁す、それがピラフ 再配布可能のADODB, Microsoft Access Text Driver を使ったのか
SQLite などの無料DB は、使えないの? >>230
ちょとー男子まじめにVBScript書きなさいよー それこそ敷居高いだろ
お手軽にテキストファイルを扱えるのがいいんだよ
もしくはMDBでいい
それ以上必要ならVBS使わない方がいい >>232
そうやってはぐらかし続けているのがいいと思う >>234
ろくなこと言ってない分際で何抜かしとるんじゃカス レポートにまとめて提出しろよ精査してやるわ
ピラフがーとしか言ってないお前らに論理的な
文章が書けるとは思えんがな そもそも何を主張したいのかもわからん
ピラフが間違ったハンガリアンを使ってないのが
気に入らないだけ? 間違ったハンガリアンを使ってほしいのなら
そのメリットを伝えないと、論文書かないと
たとえ正しいことを言ってたとしても
説得力がないと宝の持ち腐れ、精神を加速させるんだ
論理を展開するんだストーリーを描くんだよ! ■ このスレッドは過去ログ倉庫に格納されています