みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
シリアル番号って死ぬ番号ありませんか。
レコード消したりとかすると番号飛んじゃったり。
例えば...
"M" &
Right ( "0000" & ExecuteSQL (
"
SELECT MAX ( \"ID\" )
FROM \"テーブル名\"
" ;
"" ;
"" ;
""
) + 1 ;
4 )
こんな感じですかね。
重複はしないはずです。
Chikutaku さん 返信有り難うございます。
printassist でのペーパーカットは確認済です。printassistを使用した場合の問題としては,
印刷出力の「標準」「高解像度」の変更に対応していないようで小さな文字が潰れるようです。普通にFileMaker:PCからのQL-720NWへの出力ではオートカット,印刷品質なども設定できるので,
「別PCのFileMakerのスクリプトを実行。」でios端末から印刷できると助かるのですが‥
ありがとうございました。
終わってたら申し訳ございません。
この手のもので、私も一度煮詰まったことがあり、
標準でやった場合、文字が崩れました。
ただし、
quality
印刷品質を数値で指定をします。下記のパラメーターが指定可能です。
指定がない場合は、2:標準になります。
• 1:はやい
• 2:標準
• 3:きれい
を3に設定し、実行すれば、文字崩れが解消されたので、
printassistをお使いでしたら、一度ご確認ください。
printassistの仕様書が手元にあったので。
papercut
ペーパーカットの指定をします。下記のパラメーターが指定可能です。
指定がない場合は、0:カットしないになります。
• 0:カットしない
• 1:カットする(ESC/POSのみ)
Brother QLシリーズを使用し、ブラザーラスターモード指定時は下記の通りです。
• -1:カットしない
• -2:ジョブの最後にカット
• 1~255 : 指定枚数印字後にカット
• 0または指定無し : 常に一枚印字後にカット(1を指定したのと同じ)
と記載してありました。
少しでも役立てば...
と書いた後に気づきました。
printassistは関係がなかったのですね。
すいません。
興味深かったので、自分も試しました。
上記コードで動作確認が取れました。
LINE Notify API Document
リクエストパラメータを見る限りでは、対応している画像形式は、png, jpegです。とあります。
ファイルの拡張子はあってますか。
回答かどうかは分かりませんが、
数種類のレイアウトを作り、パターンによってPDFを作るやり方で前に切り抜けた思い出があります。
ヘッダ・ボディ・フッタの3種類で分けボディ内のルールでレイアウトも作成。
loopでPDFを作成、上書きを繰り返して余白を生まないPDFを作成してました。
恐らくこんな無駄なことはないと思うので、回答ではないのでしょうが、自分はこういうやり方しか思い浮かびませんでした。
なるほど。恐れ入りました。
こんなことができたのですね。
テキストエンコードは盲点でした。
utf-16部分で一度躓きましたが、上記で対応できました。
誠にありがとうございます。
お世話になっております。
FileMaker19 Windows10
WebサイトへCSVをアップロードし、データを取り込む作業があるのですが、
そのフォーマットが1レコードにつき、2行のCSVになっており、困っております。
内訳としましては、1レコード内に、顧客情報と商品情報が保管されており、
一行目は、顧客情報、2行目に商品情報となっております。
現在Excelのマクロを用いてCSVへしておりますが、FileMaker内に顧客、商品のデータがあるので、
FileMakerからエクスポートしたデータがそのフォーマットになればありがたいのですが、こういうことは可能なのでしょうか。
Excelのマクロを下記に載せておきます。
Sub CSV出力()
Dim csvFilePath As String
Dim iCount As Long
Dim jCount As Long
Dim kCount As Long
Dim maxRow As Long
Dim maxCol As Long
Dim fileNo As Integer
Dim FileName As String
Dim wScriptHost As Object, strInitDir As String
'カレントディレクトリをデスクトップに変更
Set wScriptHost = CreateObject("WScript.Shell")
ChDir wScriptHost.SpecialFolders("Desktop")
FileName = Application.GetSaveAsFilename("sample.csv", "CSVファイル(*.csv;),*.csv", 2, "保存するファイルの名前を指定してください。")
' CSVファイルパスの作成
csvFilePath = FileName
' 最終行
maxRow = ActiveSheet.Range("A1").End(xlDown).Row
' 最終列
maxCol = ActiveSheet.Range("A1").End(xlToRight).Column
' ファイル番号
fileNo = FreeFile
' ファイル開く
Open csvFilePath For Output As #fileNo
Dim isSecond As Boolean
isSecond = False
Dim isThird As Boolean
isThird = False
' 縦方向ループ(最終行まで)
For iCount = 2 To maxRow
' 横方向ループ(最終列-1まで)
For jCount = 1 To 80
'基本情報
If jCount < 32 Then
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
'基本情報最後
ElseIf jCount = 32 Then
' ファイル出力(改行付き)
Print #fileNo, Cells(iCount, jCount)
' 商品情報1行目
ElseIf jCount < 48 Then
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
' 商品情報1行目最後
ElseIf jCount = 48 Then
' ファイル出力(改行付き)
Print #fileNo, Cells(iCount, jCount)
' 商品情報2行目最初
ElseIf jCount = 49 Then
If Cells(iCount, jCount) <> "" Then
isSecond = True
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
End If
' 商品情報2行目内容
ElseIf jCount < 64 Then
If isSecond = True Then
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
End If
' 商品情報2行目最後
ElseIf jCount = 64 Then
If isSecond = True Then
' ファイル出力(改行付き)
Print #fileNo, Cells(iCount, jCount)
End If
' 商品情報3行目最初
ElseIf jCount = 65 Then
If Cells(iCount, jCount) <> "" Then
isThird = True
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
End If
' 商品情報3行目内容
ElseIf jCount < 80 Then
If isThird = True Then
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
End If
ElseIf jCount = 80 Then
If isThird = True Then
' ファイル出力(改行付き)
Print #fileNo, Cells(iCount, jCount)
End If
Else
' ファイル出力(改行なし)
Print #fileNo, Cells(iCount, jCount) & ",";
End If
' ループカウンタをコピー
kCount = jCount
Next jCount
'メモ内容がある場合は、メモ行を出力
If Cells(iCount, kCount + 1) <> "" Then
Print #fileNo, "3,,01,";
' 最終列をファイル出力(改行付き)
Print #fileNo, Cells(iCount, kCount + 1) & ","
End If
isSecond = False
isThird = False
Next iCount
' ファイルを閉じる
Close #fileNo
'
End Sub
himadanee wrote:SSL証明書が必要って、クライアント側の話じゃないんですか?
ありがとうございます。
はい、SSL証明書が必要です、SSL証明書をインストールしないで、できる方法ありますでしょうか?
よろしくお願いします。
FFFTPとかでFTPのフォルダをコピーして
手打ちで応答出来ているかの確認をした方がいいかもしれません。
自分は、SSLのcURLオプションなしでできる事が判明しました。
既に指摘されてますが、$パス名をオブジェクトフィールドに変えた、書式が間違ってませんか?半角コロンが2つ必要ですが。
"--user" & $ユーザー名 & ":" & $パスワード & "-T $パス名" & " -ssl"
スペースとフィールド指定記号が足りません。
"--user " & $ユーザー名 & ":" & $パスワード & " -T @$パス名" & " -ssl"ユーザ名とパスワードの変数値にエスケープが必要な特殊記号が含まれてませんか?
以前FTPサーバーにつなげた時@$パス名でエラーが返ってきました。
変数を設定[$UserPass;$ユーザー名 & ":" & $パスワード]
変数を設定[$file;オブジェクトフィールド]
変数を設定[$cURL;"-T $file " & "-u " & $UserPass]
一応これで動いています。
少し気になったのは、
$ディレクトリ名 "/html/pdf" ←スラッシュ要りませんか。 "/html/pdf/"
変数を設定[$URL;"ftp://" & $ホスト名 & "/html/pdf/ABC.pdf" ]
パス名表記はダメだったと思います。
https://fm-aid.com/bbs2/viewtopic.php?id=6763
すごいです。
func_request_Link('LOGIN');
上記追加で出来ました。
誠にありがとうございます。
お世話になっております。
Windows10 FM18を使用
https://bmypage.kuronekoyamato.co.jp/bm … JspServlet
上記をウェブビュアーでログインを行いたく試行錯誤しております。
Let (
[
~id = id ;
~pass = pw ;
~code = cd ;
~JS = "javascript:
function f(){
document.getElementsByName('CSTMR_CD')[0].value='[ValueCode]';
document.getElementsByName('CSTMR_PSWD')[0].value='[ValuePass]';
document.getElementsByName('LOGIN_USER_ID')[0].value='[ValueId]';
}f()" ;
~JS = Substitute ( ~JS ; "[ValueCode]" ; ~code ) ;
~JS = Substitute ( ~JS ; "[ValueId]" ; ~id ) ;
~JS = Substitute ( ~JS ; "[ValuePass]" ; ~pass )
] ;
~JS
)
これで入力までは出来るのですが、この後、ログインまでが出来ず困っております。
教えていただけますと幸いです。
見え方として、2020がいらないのであれば、インスペクタで除く事ができます。
インスペクタ→データ→データの書式設定→日付
ここまで来れば、後は好きなように表示させることができます。
テストのため、データビューアタイムスタンプを定数にして、結果を見ると、
ExecuteSQL ( "
SELECT \"x_レシートID\"
FROM GOSYNC
WHERE \"s_シンク内容\" = ? AND \"y_シンク作成日\" > TIMESTAMP '2020-07-08 13:54:00'
" ;
"" ;
"" ;
"new"
)
評価ありExecuteSQL ( "
SELECT \"x_レシートID\"
FROM GOSYNC
WHERE \"s_シンク内容\" = ? AND \"y_シンク作成日\" > ?
" ;
"" ;
"" ;
"new" ;
TIMESTAMP '2020-07-08 13:54:00'
)
<テーブルが見つかりません>このようになるのはどうしてでしょうか?また、ORDER BYを取り入れたい(タイムスタンプの降順)どの場所に記入すると良いのでしょうか?
ExecuteSQL ( "
SELECT \"x_レシートID\"
FROM GOSYNC
WHERE \"s_シンク内容\" = ? AND \"y_シンク作成日\" > ?
" ;
"" ;
"" ;
"new" ;
TIMESTAMP '2020-07-08 13:54:00' ←時間だけで大丈夫です。
)
ExecuteSQL ( "
SELECT \"x_レシートID\"
FROM GOSYNC
WHERE \"s_シンク内容\" = ? AND \"y_シンク作成日\" > ?
" ;
"" ;
"" ;
"new" ;
"2020-07-08 13:54:00"
)
ORDER BY って自身では使った事ないんですけど、
ExecuteSQL ( "
SELECT \"x_レシートID\"
FROM GOSYNC
WHERE \"s_シンク内容\" = ? AND \"y_シンク作成日\" > ?
ORDER BY \"y_シンク作成日\"
" ;
"" ;
"" ;
"new" ;
"2020-07-08 13:54:00"
)
これでいいと思います。
決して褒められたやり方ではないですが、
エクスポートする際、xlsxの拡張子で、名前にcsvを付けて吐き出し、最初開く際にエラーが出るが、
無視して開き、名前を付けて保存をするときに、拡張子をcsvにして保存。
こんなやり方で一時的に逃げてます。
具体的に載っているやつですか...
パッと出てこないんですけど。ExecuteSQLで出てきたものは、大体同じような事かいてあるので。。
ステップ3に関しては、内容フィールドと、タイムスタンプフィールドは違うフィールドなので、ANDとかORを付け加えないといけないです。
同条件で表示させたい場合は、
ExecuteSQL ( "
SELECT \"レコードID\"
FROM \"TableB\"
WHERE \"内容\" = ?
AND \"タイムスタンプ\" >= ?
" ;
"" ;
"" ;
"new" ;
$$TS
)
>Chikutakuさん
こういうことでしょうか?
何れにしても、データビューアでこのような結果が帰ってきます。
ExecuteSQL ( "SELECT \"レコードID\" FROM TableB WHERE \"内容\" = ?new" ; "" ; "" )
結果:There is an error in the syntax of the query.ExecuteSQL ( "SELECT \"x_レシートID\" FROM GOSYNC WHERE \"内容\" = "new"" ; "" ; "" )
結果:<テーブルが見つかりません>
ExecuteSQL (
"SELECT \"レコードID\"
FROM \"TableB\"
WHERE \"内容\"= ? ";
"" ;
"" ;
"new"
)
?の方が覚えるには後々いいと思うので、こういった形で覚えた方がいいかもしれません。
?の後には何も入れずに最後に持ってきます。
言葉足らずで申し訳ございません。
ExecuteSQL (
"SELECT \"x_レシートID\"
FROM \"GOSYNC\"
WHERE \"内容\"= ? ";
"" ;
"" ;
"new"
)
ちなみにシングルクォーテーションの場合は、
イコールのあとに直打ちします。
これだと汎用的にならないので、少々面倒です。
ExecuteSQL (
"SELECT \"レコードID\"
FROM \"TableB\"
WHERE \"内容\"= 'new' ";
"" ;
""
)
自分の場合は、"New"を調べたい場合、シングルクォーテーションでくくるか、
イコールの後を?にして、最後に条件を入れて表示させてます。
FMP16以降はSortValues関数が使えるので、
フィールド6を計算フィールドとして、その式にSortValues関数を適用するのが吉です。
(※なお、式は、「空欄行識別」と「末尾改行除去」に対応しています。)
Let([
#lst=List(フィールド1&Char(1);フィールド2&Char(1);フィールド3&Char(1);フィールド4&Char(1);フィールド5&Char(1)); //「空欄行識別」処理
#lst=Substitute(#lst;[Char(1);Char(0)]);
#lst=SortValues(#lst;1)
];
Substitute(#lst&Char(1);[Char(13)&Char(1);Char(0)];[Char(1);Char(0)]) //「末尾改行除去」処理
)
なるほど。ありがとうございます。
確かにフィールド毎にソートされました。
これを流用して、任意のソートはできますか。
実は、フィールド内でも入れ替えが必要になりまして。
フィールド1におえいうあみたいな文字列が入り、
それをあいうえおに戻す作業も必要になりました。
任意のソートになれば、フィールド・フィールド内問わず、入れ替えができるのかなと思った次第です。
申し訳ございませんが教えてください。
いつもお世話になっております。
FileMaker17 Windows10で使用中
フィールド1 おおおおお
フィールド2 いいいいい
フィールド3 えええええ
フィールド4 あああああ
フィールド5 ううううう
フィールド6(並び替え後のフィールド)
みたいなレコードがあり、
あああああ→いいいいい→ううううう→えええええ→おおおおお
のように並び替えをし、フィールド6へ並び替えた文字を入力したいです。
現在は、
変数設定[ $Value ;
値:"あああああ" & ¶ &
"いいいいい" & ¶ &
"ううううう" & ¶ &
"えええええ" & ¶ &
"おおおおお"
]
みたいなものを作り、GetValueでフィールド毎に合っているか否かをLoop処理で計算。
ただし、機械的に$Valueにはまっている文字列だけではなく、例えば
あいうえおやかきくけこが急に入って来たり等
Loop処理で漏れる文字列もあり、苦戦しています。
何か簡単に入れ替える方法はありませんでしょうか。
リレーションとは関係なく計算できます。
ヘルプ
https://fmhelp.filemaker.com/help/18/fm … tesql.html
ExecuteSQL (
"SELECT \"フィールド名\"
FROM\"テーブル名\" " &
"WHERE \"条件\"= ? ";
"" ;
"" ;
"第三引数"
)
自分の作ったファイルは動いているので大体こんな感じかと。
CountとかSumもあるので、調べてみてください。
Let関数と組み合わせれば、上記内容も、もう少し楽に計算できると思います。
単純なCountだけなら
ExecuteSQL (
"SELECT Count ( \"来店ID[1]\" )
FROM \"来店実績テーブル3\"
" ;
"" ;
"" ;
""
)
こんな感じですかね。フィールド名とテーブル名は上記の内容からコピペしただけなので、確認してください。
自分も最初できなくて使うことを諦めてました。けどやってみてできてみたら凄く便利でした。
自分の場合、カレンダー系のシステムはExecuteSQL で集計出すことが多いです。ExecuteSQLなら別のテーブルで計算できますし、
表示の仕方だけ注意すれば、案外楽にデータ出せます
[ Generated in 0.024 seconds, 7 queries executed - Memory usage: 676.05 KiB (Peak: 729.71 KiB) ]