需要帮助选择日期。我正在创建一个子集,其中使用 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 );