需要幫助選擇日期。我正在創建一個子集,其中使用 SelectWhere :Login Date == 01/18/2019;我無法讓它工作。我還嘗試打開子集並運行查詢生成器。我可以添加所有字段,然後按登錄日期進行過濾。登錄日期顯示在過濾器中。如果我選擇其中一個日期並點擊更新,則不會顯示任何記錄。下面是我的代碼,我附上了查詢生成器的屏幕截圖。任何幫助,將不勝感激。
問候,
韋恩
</CODE></PRE><P> </P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture-6.PNG" style="width: 973px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Capture-6.PNG" style="width: 973px;"><span class="lia-inline-image-display-wrapper" image-alt="Capture-6.PNG" style="width: 973px;"><img src="https://us.v-cdn.net/6038925/uploads/images/15261iF7CEA402ACB0B52C/Capture-6.PNG" role="button" title="Capture-6.PNG" alt="Capture-6.PNG" /></span></SPAN></SPAN></P></LINGO-BODY><LINGO-SUB id="lingo-sub-108358" slang="en-US" mode="NONE">回复:需要幫助選擇日期。</LINGO-SUB><LINGO-BODY id="lingo-body-108358" slang="en-US" mode="NONE">吉姆,<BR /><BR />我終於弄明白了。 我採用了您的解決方案,然後刪除了擴展並將其添加回我原來選擇的位置。 由於某種原因,擴展不起作用。<BR />感謝您花所有時間幫助我解決這個問題。 非常感謝。 如果沒有這個論壇上的所有專家,像我這樣學習的人將無法完成他們的項目。<BR /><BR />問候,<BR /><BR />韋恩</LINGO-BODY><LINGO-SUB id="lingo-sub-108356" slang="en-US" mode="NONE">回复:需要幫助選擇日期。</LINGO-SUB><LINGO-BODY id="lingo-body-108356" slang="en-US" mode="NONE"><P>吉姆,</P><P>我注意到調試工具中指出 ALstartDT 是字符串而不是數字。希望這有幫助。</P><P> </P><P>問候,</P><P> </P><P>韋恩</P></LINGO-BODY><LINGO-SUB id="lingo-sub-108355" slang="en-US" mode="NONE">回复:需要幫助選擇日期。</LINGO-SUB><LINGO-BODY id="lingo-body-108355" slang="en-US" mode="NONE"><P>吉姆,</P><P> </P><P>沒有錯誤,但它不會按從日期文本框中提取的 ALstartDT 日期進行子集化。我的文件包含登錄日期為 2019 年 1 月 2 日到 2019 年 1 月 24 日的行。我的 ALstartDT 是 01/18/2019。</P><P> </P><P>問候,</P><P> </P><P>韋恩</P></LINGO-BODY><LINGO-SUB id="lingo-sub-108347" slang="en-US" mode="NONE">回复:需要幫助選擇日期。</LINGO-SUB><LINGO-BODY id="lingo-body-108347" slang="en-US" mode="NONE"><P>問題是您將 :login Date 作為字符列,並且它包含時間數據和日期數據。因此,當您將其與 ALstartDT 進行比較時,就會發現它存在問題。我建議您取消註釋嘗試將 :Login Date 更改為格式為“m/d/y”的數字的行。它應該稍微改變一下,看起來像</P>
<PRE><CODE class=" language-jsl">dt6:Login Date << data type(numeric) << modeling type(continuous)<< format( "m/d/y");
然後將您的選擇行更改為
dt6 << Select where ((Contains(MyList, :Site ID)) & :Analysis == "G4");
dt6 << Select where (:Login Date >= informat(ALstartDT,"mm/dd/yyyy"),current selection("extend"));回复:需要幫助選擇日期。吉姆,
示例 JMP 表:登錄日期是字符格式。我相信 AlstartDT 是數字,這就是我遇到問題的原因?你相信這就是問題所在嗎?如果是這樣,您有什麼建議?
問候,
韋恩
回复:需要幫助選擇日期。吉姆,
這就是我要導入的excel。導入後我得到下表。見附件。
韋恩
回复:需要幫助選擇日期。吉姆,
我同意。附上一個示例表。
問候,
韋恩
回复:需要幫助選擇日期。我很確定問題是列是否為字符與比較變量是否為字符不匹配。您可以附上示例數據表嗎?
回复:需要幫助選擇日期。吉姆,
我仍然得到參數應該是數字{1}在訪問或評估 'Format' , Format/*###*/(:Login Date, "mm/dd/yyyy")回复:需要幫助選擇日期。哎呀,我的錯誤。[Row()] 是問題所在。使用
dt << select where( Format( :Login Date, "mm/dd/yyyy" ) <= ALstartDT );
回复:需要幫助選擇日期。吉姆,
當我嘗試將:Login Date 轉換為字符串時,在訪問或評估'Format', Format/*###*/:Login Date [Row()], 時收到參數應為numeric{1} 的錯誤, “月/日/年”)
問候,
韋恩
回复:需要幫助選擇日期。因為您已將變量“ALstartDT”設置為字符串
ALstartDT = Uppercase( Format( TempstartDT, "mm/dd/yyyy" ) );
(Format()函數返回一個字符串值)
然後,您還需要將“:登錄日期”轉換為字符串......我假設“:登錄日期”是一個 JMP 日期列。
dt6 << Select where( Format(:Login Date[row()], "mm/dd/yyyy") >= ALstartDT, current selection( "extend" ) );
回复:需要幫助選擇日期。吉姆,
我用的是14.1。我嘗試了很多不同的方法來格式化我的日期,但還沒有找到正確的格式。下面是我的更多代碼。我正在從日期框中傳遞一個變量。我的 Excel 導入登錄日期看起來像
請查看我是否正確傳遞了 ALstartDT,以及有關如何正確格式化日期以使選擇正常工作的任何建議。
謝謝你,
韋恩
清除日誌();
名稱默認為此處 (1);
運行腳本 = Expr(
TempstartDT = 開始 << 獲取;
TempendDT = 結束 << 得到;
ALstartDT = 大寫(格式(TempstartDT,“月/日/年”));
ALendDT = 大寫(格式(TempendDT,“月/日/年”));
);
// 文斯·法勒 撰寫
// 讓日曆出現在 numeditbox 上(默認為現在)
// 注意,這僅適用於 JMP 11 或更高版本
日期框 = 函數(
{timething = 今天()},
{新框},
新框=評估(
代替(
名稱表達式(
數字編輯框(
timething, // Eval(Sub()) 因為 JMP 怪癖
10, // 只需要這個,因為 JMP 沒有默認寬度
<<設置函數(
函數({自我},
{},
如果(缺少( self << get ),
self << Set( Eval( DUMMY ) ) // 將日期設置為 timething 參數
)
)
),
<< 設置格式(Format( "m/d/yh:m:s", 23, 0 ) ); // 為框設置日期時間格式(提供日曆)
)
),
Expr( DUMMY ), 時間
)
);
新盒子;
);
西北=
新窗口("SQL數據表提取",
LineUpBox(NColl(2),
TextBox("開始日期時間"), start = dateBox(Today()- InDays(12)),
TextBox("結束日期時間"), end = dateBox(),
ButtonBox("Cancel", ButtonPressed = "Cancel"), ButtonBox("Get Data", ButtonPressed = "Get Data") //將用戶按下按鈕的輸入存儲到變量中
));
等待(15);
//If 語句根據日期提示上按下的按鈕來採取操作
If ( ButtonPressed == "取消", nw << 關閉窗口);
If ( ButtonPressed == "取消", Stop());
if ( ButtonPressed == "獲取數據", runScript);
If (ButtonPressed == "獲取數據", runScript2);
If ( ButtonPressed == "獲取數據", nw << 關閉窗口);
Caption("查詢正在運行");
等待(0);
名稱默認為此處 (1);
用於所有床單( 1 ),
連接工作表( 0 ),
創建串聯列( 0 ),
工作表設置(
1、
有列標題( 1 ),
標題中的行數( 1 ),
標題從行 ( 1 ) 開始,
數據從行( 2 ) 開始,
數據從列 (1) 開始,
數據在行( 0 ) 結束,
數據在列 (0) 上結束,
複製跨行( 1 ),
複製的跨接標頭( 0 ),
抑制隱藏行( 1 ),
抑制隱藏列( 1 ),
抑制空列( 1 ),
視為層次結構( 0 ),
多系列堆棧( 0 ),
導入單元格顏色( 0 ),
限制列檢測(0),
列分隔符字符串(“-”)
);
);
//Column ("登錄日期") << 數據類型(數字)<< 格式("m/d/y");
dt6 << 選擇其中 (:登錄日期 >= ALstartDT,當前選擇("擴展"));
dt7 << select where(Is Missing (:Label ID)) << 刪除行;
selrows=dt7 << 獲取行 where (:Formatted Entry == "ND");
dt7:格式化條目[selRows]="0";
dt7:格式化條目<<數據類型(數字);
回复:需要幫助選擇日期。擴展至@馬克貝利這裡的響應是一個顯示正在使用的日期常量的示例。
dt = open("$SAMPLE_DATA\TechStock.jmp");
dt << select where(Date <= 05Jan2001);
有關日期的更多提示,請參閱在 JMP 中使用日期、時間、日期時間和持續時間。
回复:需要幫助選擇日期。請注意,您可以直接使用文字日期值(常量),無需在字符串和數值之間進行轉換。 形式是DDMmmYYYY:時:分:SS.S 。 (您只需根據需要使用此表單,省略右側。)因此,例如,我可以直接輸入今天上午 8 點的正確數值,如下所示:
29Jan2019:08:00
如果您啟用了該功能,腳本編輯器會將此值視為帶有顏色編碼的數字。
回复:需要幫助選擇日期。這是一個“選擇位置”示例,其結構與您提到的“選擇位置”相同。有用。因此,我相信您可能需要使用 JSL 調試器來單步調試代碼並找出問題所在。
names default to here(1);
dt= open("$SAMPLE_DATA/Aircraft Incidents.jmp");
MyList = {"Accident", "Incident" };
dt << Select where( (Contains( MyList, :Investigation Type) & :Location == "Eden, UT"));
dt << Select where( format(Column( "Event Date" )[Row()], "M/D/Y" ) == "01/05/2001", current selection("extend"));
我檢查了 JMP 11 的代碼。JMP 12 中添加了“當前選擇(“擴展”)”,因此 JSL 在 JMP 11 中無法正常工作,但在該版本之後它可以正常工作。
回复:需要幫助選擇日期。吉姆,
我嘗試了你的建議,但數據仍然沒有過濾。下面是我用過的。
問候,
韋恩
回复:需要幫助選擇日期。JMP 日期值是數值。如果要將“登錄日期”中的值與日期值進行比較,則需要將“登錄日期”的值轉換為字符串並將其壓縮為“01/07/2018”,或者將其保留為numeric 並將“01/07/2018”轉換為日期時間數值。下面的腳本使用以前的方法進行選擇
Column( "Login Date" ) << data type( numeric ) << Format( "m/d/y" );
MyList = {"HCDS", "HCDS;LENNY", "HCDS; WACKER", "HCDS; GOLDEN SAMPLE", "HCDS; ALJ", "HCDS; LENNY C",
"HCDS; WACKER; GOLDEN SAMPLE", "HCDS; WACKER; PRE-MOVE"};
dt6 << Select where( (Contains( MyList, :Site ID )) & :Analysis == "G4" );
dt6 << Select where( format(Column( "Login Date" )[Row()], "M/D/Y" ) == "01/07/2018", current selection( "extend" ) );
dt7 = dt6 << Subset( Output Table( "Aloha Lenny Assay Subset" ), Selected Rows( 1 ), Selected Columns( 0 ) );
dt7 << select where( Is Missing( :Label ID ) ) << delete rows;
selrows = dt7 << get rows where( :Formatted Entry == "ND" );
dt7:Formatted Entry[selRows] = "0";
dt7:Formatted Entry << data type( Numeric );