ComboBox as user input *FAIL* - WHY!!!
private JComboBox comboGender;
private String sex[] = {"Select Gender", "male", "female"};
comboGender = new JComboBox (sex);
comboGender.setMaximumRowCount(3);
jPanel1.add(comboGender);
private String getData(JTextField component) {
String text, trimmed;
if(component.getText().length() > 0) {
text = component.getText();
trimmed = text.trim();
return trimmed; }
else {
text = "";
return text;
public void retrieveData(){
this.name = getData(jTextFieldName);
this.add = getData(jTextFieldAdd);
//this.sex = getData(jTextFieldGender);
this.phone = getData(jTextFieldPhone);
this.mail = getData( jTextFieldEmail);
protected void createCustField(boolean readonly, String name, String email,String mail, String phone, String sex){
if (readonly == true)
jTextFieldName.setEditable(false);
jTextFieldEmail.setEditable(false);
jTextFieldAdd.setEditable(false);
comboGender.setEditable(false);
jTextFieldPhone.setEditable(false);
void jButtonAdd_actionPerformed(ActionEvent e) {
retrieveData();
String sex = (String)comboGender.getSelectedItem();
try{
custID = customer.createCustomer(name, add,
mail,phone,sex);
} catch (Exception ex){
System.out.println(ex.toString());
boolean readonly = false;
createCustField(false, null, null, null, null,null);
jTextFieldId.setText(custID); }after i have changed the code accodring to DerfBergler.. i still get the same error from both the server and client app compiler.
error is :
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.ServerException: EJBException:; nested exception is:
javax.ejb.EJBException: createCustomer: ejbCreate: General error, message from server: "Column 'custPhoneNo' cannot be null"; nested exception is:
javax.ejb.EJBException: ejbCreate: General error, message from server: "Column 'custPhoneNo' cannot be null"
p/s: before i treat the gender as jTextField instead of combobox. there is no error
this time i have done an experiment since i cant get comboBox working and the message displayed was :
javax.ejb.EJBException: createCustomer: ejbCreate: General error, message from server: "Column 'custPhoneNo' cannot be null"; nested exception is:
javax.ejb.EJBException: ejbCreate: General error, message from server: "Column 'custPhoneNo' cannot be null"i tried treating the gender as text field and manually enter string myself. as it is, te program works. then i tried leaving the field 'gender' empty, the same message is displayed when i changed the gender to combo box instead of text field.
i am sure that there isnt any problem with the db, or the storing part of my coding. i m sure that the problem lies in the combo box does not get the user input at all.
my question is: where have i made my mistake??
Similar Messages
-
Failed to accept user input when run report on Web
I've testing a report with one input parameter. It's a date with default current date. It is done by using SQL 'select sysdate from dual;' has been added to before form trigger. User is allowed to input any date other than the default sysdate before submitting the report. The report works fine when run in report builder, but it's failed to accepted user input date when called through web browser. The report still uses the current date as SQL parameter rather than user input date.
Can anyone help me to fix this bug?
The report is develped by Oracle 9i and is saved and run in .rdf format.I created a report with a user defined parameter p_date of DATE type. In the layout model, I created a field with p_date as data source. In the before form trigger, I put
'select sysdate into :p_date from dual;
I run the report through rwservlet:
http://host:port/reports/rwservlet?report=datetest.rdf&destype=cache&desformat=html&userid=scott/tiger@orcl¶mform=yes
In the html parameter form, I change the date from default current date to a future date and that date is shown in the final report.
So I can't reproduce the bug.
One thing you can try it to turn on reports server trace file, see what command line is sent to reports server when you submitting the parameter form.
Thanks,
-Shaun -
Exe running from java fails to get user input .Help me...
I have an DOS based exe.It just asks for input for a number from the user and prints the number it gtes.
When I try to execute this program from Java with the following code
import java.lang.Runtime;
import java.lang.Process;
import java.io.*;
public class runtimetest {
public static void main(String[] args) throws Exception {
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("myExe");
nothing happens.Thatis It doesnot ask for the input .and I am just unable to know whether its running or not.
What could be wrong?
What is the other means to tun the DOS based exe that accepts user inputs , from Java.
Plz help me as I am in urgent need.
Aathitry this
Runtime r = Runtime.getRuntime();
Process p = null;
try
System.out.println("Exe will be called");
p = r.exec("cmd.exe /c start c:/ur exe path ");
p.waitFor();
catch (Exception e)
e.printStackTrace();
} -
User Authentication Failed error when trying to display a JSP portlet
The steps carried out are as follows :
1. Created a JSP file named "c.jsp" and deployed it under 902_MidTier_Home\j2ee\home\default-web-app\examples\jsp
2. Created a table named USER_TABLE under Scott schema to store the usernames and passwords to validate this JSP application.
3. Registered this JSP as an external application with the following values :
Application Name : RAGHU
Login URL : http://hostname:port/j2ee/examples/jsp/c.jsp
User Name/ID Field Name : username
Password Field Name : password
Type of Authentication Used : POST
3. Clicked on the External Application and entered the username as USER1 and password as USER1 ( These values are available
under USER_TABLE for comparison ). Then it shows the message "Hi User1 .. Welcome message"
4. Now created a directory named JSPSAMPLE under "WEB-INF\Providers" and put the provider.xml file under this.
Created a raghu.properties file and placed it under "WEB-INF\deployment".
5. Now tested the testpage using the URL " http://hostname:port/jpdk/providers/raghu " and it works fine.
6. Registered this as a provider in Portal and added this portlet onto a page. Assigned this page to a newly created user.
It gives the message " Authentication Failed - Update Login Information " which is expected. I click on the link and
it takes me to the external application username password. I enter the credentials but this time it comes back again
to the page with the same message " Authentication Failed - Update Login Information ".
7. Basically the values are not passed to the Username and Password in jsp page which is why the problem occurs.
The JSP Code used is as follows :
<%@ page import="java.sql.*" %>
<HTML>
<HEAD><TITLE>DB Connectivity test</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<B>user_table</B>
<BR><BR>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
try
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@hostname:1521:iasdb","scott","tiger");
Statement stmt = conn.createStatement();
String query = "SELECT * FROM user_table where userid= '"+ username +"' and passwd = '" + password + "' " ;
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
out.println("<TR>");
out.println(" <TD> hi " + rs.getString("userid") + ", welcome</TD>");
out.println("</TR>");
out.println("</TABLE>");
catch(SQLException e)
out.println("SQLException: " + e.getMessage() + "<BR>");
while((e = e.getNextException()) != null)
out.println(e.getMessage() + "<BR>");
out.println("invalid userid,password");
catch(ClassNotFoundException e)
out.println("ClassNotFoundException: " + e.getMessage() + "<BR>");
finally
//Clean up resources, close the connection.
if(conn != null)
try
conn.close();
catch (Exception ignored) {}
%>
</CENTER>
</BODY>
</HTML>
The Provider.xml file used is as follows :
<?xml version="1.0" encoding="UTF-8"?>
<?providerDefinition version="3.1"?>
<provider class="oracle.portal.provider.v2.http.URLProviderDefinition">
<providerInstanceClass>oracle.portal.provider.v2.http.URLProviderInstance</providerInstanceClass>
<session>true</session>
<authentication class="oracle.portal.provider.v2.security.Authentication">
<authType>ExternalApp</authType>
<userFieldName>username</userFieldName>
<userPwdName>password</userPwdName>
<errorPageMessages>Raghu,Please sign in,Sign me up!</errorPageMessages>
</authentication>
<portlet class="oracle.portal.provider.v2.http.URLPortletDefinition">
<id>1</id>
<name>RaghuPortlet</name>
<title>Raghu Mail Portlet</title>
<description>This portlet is to test Integration services using mail.yahoo.com</description>
<timeout>100</timeout>
<timeoutMessage>Raghu timed out</timeoutMessage>
<showEdit>false</showEdit>
<showEditDefault>false</showEditDefault>
<showPreview>false</showPreview>
<showDetails>false</showDetails>
<hasHelp>false</hasHelp>
<hasAbout>false</hasAbout>
<acceptContentType>text/html</acceptContentType>
<registrationPortlet>false</registrationPortlet>
<accessControl>public</accessControl>
<renderer class="oracle.portal.provider.v2.render.RenderManager">
<showPage class="oracle.portal.provider.v2.render.http.URLRenderer">
<pageUrl>http://172.17.24.235:8888/c.jsp</pageUrl>
<contentType>text/html</contentType>
<filter class="oracle.portal.provider.v2.render.HtmlFilter">
<useAuthLinks>true</useAuthLinks>
<headerTrimTag><table width="100%" cellpadding=0 cellspacing=0 border=0><tr><td bgcolor=#9bbad6></headerTrimTag>
<footerTrimTag><table width="100%" cellpadding=2 cellspacing=1><tr><td bgcolor=#9bbad6></footerTrimTag>
<convertTarget>true</convertTarget>
<redirectUrlFieldName>.done</redirectUrlFieldName>
</filter>
</showPage>
</renderer>
<securityManager class="oracle.portal.provider.v2.security.URLSecurityManager">
<authorizType>registered</authorizType>
</securityManager>
</portlet>
</provider>
The Contents of raghu.properties file
serviceClass=oracle.webdb.provider.v2.adapter.soapV1.ProviderAdapter
loaderClass=oracle.portal.provider.v2.http.DefaultProviderLoader
showTestPage=true
definition=providers/raghu/provider.xml
autoReload=true
Any inputs regarding why the values are passed properly in case of External Application but not so when registered as
a portlet in Portal.
Regards
Satish GAs I can see from the information posted, you are trying to
use URL-based portlet's SSO feature, though not in a correct
way.
The SSO feature of URL-based portlets relie on the usage
of Cookies as authentication tokens. For example, in the
present context, http://hostname:port/j2ee/examples/jsp/c.jsp
will write a cookie to the client upon successfull authentication.
Subsequent access to the same JSP or some other JSP in the same
workspace should be checking for the existence of this particular
cookie at the client side and if found should not prompt for
user information again.
If you can fine tune your existing applications as per above
conditions, then everything should work fine. Else you might
want to use page parameters to pass user information.
For more information on page parameters, please visit
http://portalstudio.oracle.com/servlet/page?_pageid=350&_dad=ops&_schema=OPSTUDIO&12678_PDKHOME902_39847486.p_subid=249821&12678_PDKHOME902_39847486.p_sub_siteid=73&12678_PDKHOME902_39847486.p_edit=0#NEW1 -
Have this small script (my first attempt in Scripting), which is loaded with Acrobat 9 at startup.
app.addMenuItem({ cName: "Gem &KMS-skrivelse", cParent: "File", cExec: "SaveAs('registreringsmeddelelse', 'produkter/')", nPos: 3 });
app.addMenuItem({ cName: "Gem &dokument i sag", cParent: "File", cExec: "SaveAs('', '')", nPos: 4 });
function SaveAs(cName, cDirectory)
//Get full year
var date=new Date();
cYear = date.getFullYear();
//Get year, case number and file name from user input
var cYear = app.response({ cQuestion: "Indtast sagsår:", cTitle: "Sagsår", cDefault: cYear });
var cCase = app.response({ cQuestion: "Indtast sagsnr.:", cTitle: "Sagsnr."});
var cFile = app.response({ cQuestion: "Indtast filnavn (uden .pdf):", cTitle: "Filnavn", cDefault: cName });
if (cFile == null)
return;
//Concatenate path string
var cPath = "/h/digi/s" + cYear + "/" + cYear + "-" + cCase + "/" + cDirectory + cFile + ".pdf";
//Try to save the document, if success, inform the user where to
try {
this.saveAs({ cPath: cPath, bPromptToOverwrite: true });
app.alert("Dokumentet blev gemt i " + cPath, 3);
catch(e) {
app.alert("Kunne ikke gemme dokument i " + cPath + ". Kontroller at mappen er oprettet, og at du har skriverettigheder til denne, samt at Acrobat/Reader er sat korrekt op.");
//So long and thanks for all the fish
return;
Based on user input it saves documents to folders on a network share.
It works just fine, but if the user cancel the input dialog, null is returned, and eventually will be part of the filename. So I use a if statement to check if cFile is null, and if true just returns the function. But this fails with this error message:
GeneralError: Handlingen mislykkedes.
Root.(null):17:Menu Gem &dokument i sag:Exec
script terminated
Why is this so?
Best regards
mpThe script still continues after return;
Try this
app.addMenuItem({ cName: "Gem &KMS-skrivelse", cParent: "File", cExec: "SaveAs('registreringsmeddelelse', 'produkter/')", nPos: 3 });
app.addMenuItem({ cName: "Gem &dokument i sag", cParent: "File", cExec: "SaveAs('', '')", nPos: 4 });
function SaveAs(cName, cDirectory)
//Get full year
var date=new Date();
cYear = date.getFullYear();
//Get year, case number and file name from user input
var cYear = app.response({ cQuestion: "Indtast sagsår:", cTitle: "Sagsår", cDefault: cYear });
var cCase = app.response({ cQuestion: "Indtast sagsnr.:", cTitle: "Sagsnr."});
var cFile = app.response({ cQuestion: "Indtast filnavn (uden .pdf):", cTitle: "Filnavn", cDefault: cName });
if (cFile == null)
else
//Concatenate path string
var cPath = "/h/digi/s" + cYear + "/" + cYear + "-" + cCase + "/" + cDirectory + cFile + ".pdf";
//Try to save the document, if success, inform the user where to
try {
this.saveAs({ cPath: cPath, bPromptToOverwrite: true });
app.alert("Dokumentet blev gemt i " + cPath, 3);
catch(e) {
app.alert("Kunne ikke gemme dokument i " + cPath + ". Kontroller at mappen er oprettet, og at du har skriverettigheder til denne, samt at Acrobat/Reader er sat korrekt op.");
//So long and thanks for all the fish
return; -
How to make Flash to wait for user input
Hi,
I found this PHP script, then I made some changes to make it
FEED the Flash user interface with online user input.
The main concept of this script is WAITING for user input, so
it shows the messages and then go to next line and so on.
The user input go to directly to TEXT file which writes in
lines, each line has a unique id = (mag_id).
There "get_msge.php" which works as the middleware between
FLASH and messages text file.
The problem, its doesn’t show any data while there are
data in the text file.
Help here please, best regards.
This is the link of
problem illustartion
AS is:
// create an object to store the variables
varReceiver = new LoadVars();
// load the variables from the text file
varReceiver.load("get_msg.php?file_id=1&msg_id=1",
"POST");
// trigger something - when the variables finish loading
varReceiver.onLoad = function(){
//the variables have finished loading
if (this.msg_id == 1) {
_root.xmsg1_swf.text = this.msg;
_root.xmsg1_ch.text = this.msg;
gotoAndPlay("line2");
} else {WAIT }
PHP is:
<?php
//get these values from the FLASH
$file_id_swf = $_POST ['file_id'];
$file_name = "messages/messages".$file_id_swf.".txt";
$msg_id_swf = $_POST ['msg_id'];
// [0] ."||".[1] ."||".[2] ."||". [3] ."||".[4]."||". [5].
//$msg_id."||".date."||".time."||".$from."||".$to."||".$msg.
$fp = fopen ($file_name, 'rb');
while (!feof ($fp))
$msg_txt = fgets ($fp, 1024);
$line = explode ("||", $msg_txt);
$msg_id = $line[0];
$from = $line[3];
$to = $line[4];
$msg = utf8_encode ($line[5]);
if ($msg_id == $msg_id_swf)
echo
"msg_id=".$msg_id."&from=".$from."&to=".$to."&msg=".$msg;
}//while
fclose ($fp);
?>Well, given the things that you've written, I don't think it
could. There technically isn't any code in flash that lets it
"wait." In order to "wait," you must run the script over again
until some condition is met.
However, your code does look accurate. Why do you need to
wait? The onLoad function will be invoked WHEN something is loaded.
So, I don't see the reason for the "waiting."
In addition to that, I would like to say that using text
files isn't that great with flash. I have done this before and
noticed several problems with using text files. The biggest problem
is that the text files are cached after being loaded. Every time
you re-load it again, you will get what you got the first time
until you reset your cache (ie. close your browser). I suggest
using MySQL. (Just my thought.) -
Asking for user input in the middle of a function
Here's my issue.
I need to launch and input window in the middle of a function for user input. Before I can continue through the function I need a response back from the user first. Psuedo code below:
function
function begins
pop up window is launched to ask for user input
function continues after users submits input
user input from pop up window is used in function return value
Let me know if you need more clarification but this is essentially what I'm attempting to do.The way actionScript works it isn’t really designed to work that way
Is there any reason why you have to only use one function as you have written
I think you really do need to split up your code into sections that a, set up the pop-up with event listeners waiting for the input to be completed, trigger the pop up with user input, then have a handler function that then interprets the results of the user action.
Trying to force the system into a closed loop while waiting will be a bad idea.
By using a pop-up or an alert window that is set to be modal, you are effectively stopping your application doing anything else until the user input has been completed, but still not locking the app into a closed loop. Imagine what would happen if you did put the system into a closed loop, the mouse movement wouldn’t be updated, the screen wouldn’t refresh and the system wouldn’t be able to handle your user input. the reason for using async model is you are able to let the system still do all its background task (move the mouse, give inputs focus, keep the screen drawn etc) but still tell a part of your app to ‘wait for input’ before carrying on it execution of your logic
Do you come from another programming language? Maybe one that uses less of an OOP approach? I only ask, as the method you are describing is much more like how I had to program when I worked on computers years ago as an assembly programmer.
In actionscript and most other modern languages and Oss you don’t have total control of the system and cant lock it into an action as you describe.
You need to have an asynchronous approach to situations like you describe and let the system run in the back ground while you are waiting for input (or date from a server for that matter)
Please excuse me if I am telling you things you already know.
What exactly is your use case for this? Maybe if we knew exactly what you are working on I might be able to offer a solution that would make sense for your particular situation.
Hope all is going well and please feel free to contact me if you are stuck -
Help needed, Createing Dynamic User input
Hello,
I am attempting to create some dynamic user input by "predicting" what the user requires in a text box.
For example if the user enters "Smi" I have a select list pop up which gives the user all options that begin with "Smi".
I am able to achieve the popups but the interface is quite jerky and not terribly responsive I am trying to solve this by using a thread which starts and stops when new input is received but it is still not quite right.
The program uses a Sorted TreeSet to hold the data (I thought this would give me a quick search time) and a simple interface at this stage.
Any help would be fantastic
Thanks in advance :P
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.text.*;
import java.util.*;
/** This program represents part of a larger user interface for allowing the
user to select data from a file or database.
<p>
When the program starts up, it will read in data from a given file, and hold
it in some type of container allowing rapid access.
<p>
The user may then type in the first few letters of the surname of a person,
and this program should immediately present in a popup dialog the names which
match. The user will be able to click on one of the names in the popup and
that will cause all data about that person to be displayed in the JTextArea
at the bottom of the window.
<p>
This program requires the FormLayout.class, FormLayout$Placement.class, and
FormLayout$Constraint.class files in the same directory
(folder) or in its classpath. These is provided separately.
class PartMatch extends JFrame implements Runnable
/** Close down the program. */
JButton quitbtn;
/** Field for the surname. */
JTextField namefld;
/** Full details of the person(s). */
JTextArea results;
/** Popup dialog to display the names and addresses which
match the leading characters given in namefld. */
Chooser matches;
/** Default background color for a window. */
final static Color defBackground = new Color(0xD0C0C0);
/** Default foreground color for a window. */
final static Color defForeground = new Color(0x000000);
/** Default background color for a field */
final static Color fldBackground = new Color(0xFFFFFF);
/** Default background color for a button */
final static Color btnBackground = new Color(0xF0E0E0);
final static Color dkBackground = new Color(0xB0A0A0);
/** Larger font */
final static Font bold = new Font("Helvetica", Font.BOLD, 30);
TreeSet members;
String input;
String[] found;
public static void main(String arg[])
UIManager.put("TextField.background",fldBackground);
UIManager.put("TextField.foreground",defForeground);
UIManager.put("TextField.selectionBackground",btnBackground);
UIManager.put("TextArea.background",fldBackground);
UIManager.put("TextArea.foreground",defForeground);
UIManager.put("TextArea.selectionBackground",btnBackground);
UIManager.put("Panel.background",defBackground);
UIManager.put("Label.background",defBackground);
UIManager.put("Label.foreground",defForeground);
UIManager.put("Button.background",btnBackground);
UIManager.put("Button.foreground",defForeground);
UIManager.put("CheckBox.background",defBackground);
UIManager.put("ScrollBar.background",defBackground);
UIManager.put("ScrollBar.thumb",btnBackground);
UIManager.put("ComboBox.background",btnBackground);
UIManager.put("ComboBox.selectionBackground",dkBackground);
PartMatch trial = new PartMatch(arg);
public PartMatch( String [] arg )
super("Part Match");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cpane = getContentPane();
FormLayout form = new FormLayout(cpane);
JLabel lab1 = new JLabel("Fetch details") ;
lab1.setFont( bold );
form.setTopAnchor( lab1, 4 );
form.setLeftAnchor( lab1, 4 );
JLabel lab2 = new JLabel("Surname: ") ;
form.setTopRelative( lab2, lab1, 4 );
form.setLeftAlign( lab2, lab1 );
namefld = new JTextField( 30 );
form.setBottomAlign( namefld, lab2 );
form.setLeftRelative( namefld, lab2, 4 );
namefld.addCaretListener( new CaretListener()
public void caretUpdate(CaretEvent e)
showMatches();
quitbtn = new JButton( "Quit" );
quitbtn.addActionListener( new ActionListener()
public void actionPerformed(ActionEvent e)
quitProcessing();
form.setBottomAlign( quitbtn, namefld );
form.setLeftRelative( quitbtn, namefld, 15 );
results = new JTextArea( 10,50 );
results.setEditable(false);
JScrollPane jsp = new JScrollPane( results,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
form.setTopRelative( jsp, lab2, 6 );
form.setLeftAlign( jsp, lab2 );
form.setBottomAnchor( jsp, 5 );
form.setRightAnchor( jsp, 5 );
form.setRightAnchor( quitbtn, 5 );
matches = new Chooser( this );
//matches.setUndecorated(true);
pack();
setVisible(true);
namefld.requestFocus();
if (arg.length > 0) init(arg[0]);
else init("triathlon.txt"); //<<<<<<<<<<<<<<<< Place the default filename here
/** Called once only, at the end of the constructor, to read the data
* from the membership file.
public void init( String fname )
members = new TreeSet();
try {
FileReader fr = new FileReader(new File (fname));
Scanner scan = new Scanner(fr);
trimember cmem;
String cLine, eTag, memberNo, first, last, gender, yob, tel ,addr,
club;
while(scan.hasNextLine())
cLine = scan.nextLine();
Scanner scan2 = new Scanner(cLine);
scan2.useDelimiter(";");
eTag = scan2.next().trim();
memberNo = scan2.next().trim();
first = scan2.next().trim();
last = scan2.next().trim();
gender = scan2.next().trim();
yob = scan2.next().trim();
tel = scan2.next().trim();
addr = scan2.next().trim();
club = scan2.next().trim();
cmem = new trimember(eTag, memberNo, first, last, gender, yob,
tel, addr, club);
members.add(cmem);
catch (FileNotFoundException ex)
results.append("Sorry can't find the input file\n");
results.append("Please check file name and location and try again");
ex.printStackTrace();
/** Called every time there is a change in the contents of the text field
* namefld. It will first clear the text area. It then needs to search
* through the container of data to find all records where the surname
* starts with the characters that have been typed. The names and
* addresses need to be set up as strings and placed in
* an array of Strings. This can be placed in the "matches" window and
* displayed for the user, inviting one to be selected.
* <p>
* The performance of this is very important. If necessary, it may be
* necessary to run as a separate thread so that the user interface is
* not delayed. It is essential that the user be able to type letters at a
* reasonable speed and not have the keystroke processing held up by
* previous text.
public void showMatches( )
run();
// First clear the text area
//results.setText("");
// Determine the leading characters of the surname that is wanted
input = namefld.getText();
// Locate the data for this name, and display each matching item
// in the JTextArea ...
// Example of how to set the data in the popup dialog
matches.list.setListData(found);
matches.pack(); // resize the popup
// set the location of the popup if it is not currently visible
if ( ! matches.isVisible())
Dimension sz = matches.getSize();
Point mouse = getMousePosition();
Point framepos = getLocation();
int x=0, y=0;
if (mouse == null)
Point pt = results.getLocation();
x = pt.x + 20 + framepos.x;
y = pt.y + 20 + framepos.y;
else
x = mouse.x - 2 + framepos.x;
y = mouse.y - 2 + framepos.y;
matches.setLocation(x,y);
matches.setVisible(true);
namefld.requestFocus();
/** Perform any final processing before closing down.
public void quitProcessing( )
// Any closing work. Then
System.exit(0);
public void run()
ArrayList<String> foundit = new ArrayList<String>();
System.out.println(input);
if(input != null)
Iterator it = members.iterator();
while(it.hasNext())
trimember test = (trimember) it.next();
if (test.last.startsWith(input))
foundit.add(test.last +", "+ test.first);
found = new String[foundit.size()];
for(int i=0; i<foundit.size();i++)
found[i] = foundit.get(i);
/** A window for displaying names and addresses from the data set which
match the leading characters in namefld.
<p>
This will automatically pop down if the user moves the mouse out of the
window.
<p>
It needs code added to it to respond to the user clicking on an item in
the displayed list. */
class Chooser extends JWindow
/** To display a set of names and addresses that match the leading
characters of the namefld text field. */
public JList list = new JList();
Chooser( JFrame parent )
super( parent );
Container cpane = getContentPane();
cpane.addMouseListener( new MouseAdapter()
public void mouseExited(MouseEvent e)
Chooser.this.setVisible(false);
cpane.add("Center",list);
list.addListSelectionListener( new ListSelectionListener()
public void valueChanged(ListSelectionEvent e)
Chooser.this.setVisible(false);
System.out.println("ValueChanged");
// First clear the text area
results.setText("");
String in = (String) list.getSelectedValue();
System.out.println("Selected Value was : "+in);
String[] inlf = in.split(", ");
System.out.println("inlf[0]:"+inlf[0]+" inlf[1]:"+inlf[1]);
results.append("Surname \tFirst \teTag \tMemberNo \tSex \tYOB " +
"\tTel \tAddress \t\t\tClub\n");
Iterator it = members.iterator();
while(it.hasNext())
trimember test = (trimember) it.next();
if (test.last.equals(inlf[0])&&test.first.equals(inlf[1]))
results.append(test.toString()+"\n");
namefld.requestFocus();
public class trimember implements Comparable
String eTag;
public String memberNo;
public String first;
public String last;
String gender;
String yob;
String tel;
String addr;
String club;
public trimember(String eT, String me, String fi, String la,
String ge, String yo, String te, String ad, String cl)
eTag = eT;
memberNo = me;
first = fi;
last = la;
gender = ge;
yob = yo;
tel = te;
addr = ad;
club = cl;
//To String method to output string of details
public String toString()
return last + "\t" + first + "\t" + eTag + "\t" +
memberNo + "\t" + gender + "\t" + yob + "\t"+ tel + "\t" +
addr + "\t" + club;
//Compare and sort on Last name
public int compareTo(Object o)
trimember com = (trimember) o;
int lastCmp = last.compareTo(com.last);
int firstCmp = first.compareTo(com.first);
int memCmp = memberNo.compareTo(com.memberNo);
if (lastCmp == 0 && firstCmp !=0)return firstCmp;
else if (lastCmp==0&&firstCmp==0)return memCmp;
else return lastCmp;
}Please don't cross-post. It is considered very rude to do that here:
http://forum.java.sun.com/thread.jspa?messageID=9953193 -
Help needed, Providing Dynamic User input
Hello,
I am attempting to create some dynamic user input by "predicting" what the user requires in a text box.
For example if the user enters "Smi" I have a select list pop up which gives the user all options that begin with "Smi".
I am able to achieve the popups but the interface is quite jerky and not terribly responsive I am trying to solve this by using a thread which starts and stops when new input is received but it is still not quite right.
The program uses a Sorted TreeSet to hold the data (I thought this would give me a quick search time) and a simple interface at this stage.
Any help would be fantastic
Thanks in advance :P
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.text.*;
import java.util.*;
/** This program represents part of a larger user interface for allowing the
user to select data from a file or database.
<p>
When the program starts up, it will read in data from a given file, and hold
it in some type of container allowing rapid access.
<p>
The user may then type in the first few letters of the surname of a person,
and this program should immediately present in a popup dialog the names which
match. The user will be able to click on one of the names in the popup and
that will cause all data about that person to be displayed in the JTextArea
at the bottom of the window.
<p>
This program requires the FormLayout.class, FormLayout$Placement.class, and
FormLayout$Constraint.class files in the same directory
(folder) or in its classpath. These is provided separately.
class PartMatch extends JFrame implements Runnable
/** Close down the program. */
JButton quitbtn;
/** Field for the surname. */
JTextField namefld;
/** Full details of the person(s). */
JTextArea results;
/** Popup dialog to display the names and addresses which
match the leading characters given in namefld. */
Chooser matches;
/** Default background color for a window. */
final static Color defBackground = new Color(0xD0C0C0);
/** Default foreground color for a window. */
final static Color defForeground = new Color(0x000000);
/** Default background color for a field */
final static Color fldBackground = new Color(0xFFFFFF);
/** Default background color for a button */
final static Color btnBackground = new Color(0xF0E0E0);
final static Color dkBackground = new Color(0xB0A0A0);
/** Larger font */
final static Font bold = new Font("Helvetica", Font.BOLD, 30);
TreeSet members;
String input;
String[] found;
public static void main(String arg[])
UIManager.put("TextField.background",fldBackground);
UIManager.put("TextField.foreground",defForeground);
UIManager.put("TextField.selectionBackground",btnBackground);
UIManager.put("TextArea.background",fldBackground);
UIManager.put("TextArea.foreground",defForeground);
UIManager.put("TextArea.selectionBackground",btnBackground);
UIManager.put("Panel.background",defBackground);
UIManager.put("Label.background",defBackground);
UIManager.put("Label.foreground",defForeground);
UIManager.put("Button.background",btnBackground);
UIManager.put("Button.foreground",defForeground);
UIManager.put("CheckBox.background",defBackground);
UIManager.put("ScrollBar.background",defBackground);
UIManager.put("ScrollBar.thumb",btnBackground);
UIManager.put("ComboBox.background",btnBackground);
UIManager.put("ComboBox.selectionBackground",dkBackground);
PartMatch trial = new PartMatch(arg);
public PartMatch( String [] arg )
super("Part Match");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cpane = getContentPane();
FormLayout form = new FormLayout(cpane);
JLabel lab1 = new JLabel("Fetch details") ;
lab1.setFont( bold );
form.setTopAnchor( lab1, 4 );
form.setLeftAnchor( lab1, 4 );
JLabel lab2 = new JLabel("Surname: ") ;
form.setTopRelative( lab2, lab1, 4 );
form.setLeftAlign( lab2, lab1 );
namefld = new JTextField( 30 );
form.setBottomAlign( namefld, lab2 );
form.setLeftRelative( namefld, lab2, 4 );
namefld.addCaretListener( new CaretListener()
public void caretUpdate(CaretEvent e)
showMatches();
quitbtn = new JButton( "Quit" );
quitbtn.addActionListener( new ActionListener()
public void actionPerformed(ActionEvent e)
quitProcessing();
form.setBottomAlign( quitbtn, namefld );
form.setLeftRelative( quitbtn, namefld, 15 );
results = new JTextArea( 10,50 );
results.setEditable(false);
JScrollPane jsp = new JScrollPane( results,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
form.setTopRelative( jsp, lab2, 6 );
form.setLeftAlign( jsp, lab2 );
form.setBottomAnchor( jsp, 5 );
form.setRightAnchor( jsp, 5 );
form.setRightAnchor( quitbtn, 5 );
matches = new Chooser( this );
//matches.setUndecorated(true);
pack();
setVisible(true);
namefld.requestFocus();
if (arg.length > 0) init(arg[0]);
else init("triathlon.txt"); //<<<<<<<<<<<<<<<< Place the default filename here
/** Called once only, at the end of the constructor, to read the data
* from the membership file.
public void init( String fname )
members = new TreeSet();
try {
FileReader fr = new FileReader(new File (fname));
Scanner scan = new Scanner(fr);
trimember cmem;
String cLine, eTag, memberNo, first, last, gender, yob, tel ,addr,
club;
while(scan.hasNextLine())
cLine = scan.nextLine();
Scanner scan2 = new Scanner(cLine);
scan2.useDelimiter(";");
eTag = scan2.next().trim();
memberNo = scan2.next().trim();
first = scan2.next().trim();
last = scan2.next().trim();
gender = scan2.next().trim();
yob = scan2.next().trim();
tel = scan2.next().trim();
addr = scan2.next().trim();
club = scan2.next().trim();
cmem = new trimember(eTag, memberNo, first, last, gender, yob,
tel, addr, club);
members.add(cmem);
catch (FileNotFoundException ex)
results.append("Sorry can't find the input file\n");
results.append("Please check file name and location and try again");
ex.printStackTrace();
/** Called every time there is a change in the contents of the text field
* namefld. It will first clear the text area. It then needs to search
* through the container of data to find all records where the surname
* starts with the characters that have been typed. The names and
* addresses need to be set up as strings and placed in
* an array of Strings. This can be placed in the "matches" window and
* displayed for the user, inviting one to be selected.
* <p>
* The performance of this is very important. If necessary, it may be
* necessary to run as a separate thread so that the user interface is
* not delayed. It is essential that the user be able to type letters at a
* reasonable speed and not have the keystroke processing held up by
* previous text.
public void showMatches( )
run();
// First clear the text area
//results.setText("");
// Determine the leading characters of the surname that is wanted
input = namefld.getText();
// Locate the data for this name, and display each matching item
// in the JTextArea ...
// Example of how to set the data in the popup dialog
matches.list.setListData(found);
matches.pack(); // resize the popup
// set the location of the popup if it is not currently visible
if ( ! matches.isVisible())
Dimension sz = matches.getSize();
Point mouse = getMousePosition();
Point framepos = getLocation();
int x=0, y=0;
if (mouse == null)
Point pt = results.getLocation();
x = pt.x + 20 + framepos.x;
y = pt.y + 20 + framepos.y;
else
x = mouse.x - 2 + framepos.x;
y = mouse.y - 2 + framepos.y;
matches.setLocation(x,y);
matches.setVisible(true);
namefld.requestFocus();
/** Perform any final processing before closing down.
public void quitProcessing( )
// Any closing work. Then
System.exit(0);
public void run()
ArrayList<String> foundit = new ArrayList<String>();
System.out.println(input);
if(input != null)
Iterator it = members.iterator();
while(it.hasNext())
trimember test = (trimember) it.next();
if (test.last.startsWith(input))
foundit.add(test.last +", "+ test.first);
found = new String[foundit.size()];
for(int i=0; i<foundit.size();i++)
found[i] = foundit.get(i);
/** A window for displaying names and addresses from the data set which
match the leading characters in namefld.
<p>
This will automatically pop down if the user moves the mouse out of the
window.
<p>
It needs code added to it to respond to the user clicking on an item in
the displayed list. */
class Chooser extends JWindow
/** To display a set of names and addresses that match the leading
characters of the namefld text field. */
public JList list = new JList();
Chooser( JFrame parent )
super( parent );
Container cpane = getContentPane();
cpane.addMouseListener( new MouseAdapter()
public void mouseExited(MouseEvent e)
Chooser.this.setVisible(false);
cpane.add("Center",list);
list.addListSelectionListener( new ListSelectionListener()
public void valueChanged(ListSelectionEvent e)
Chooser.this.setVisible(false);
System.out.println("ValueChanged");
// First clear the text area
results.setText("");
String in = (String) list.getSelectedValue();
System.out.println("Selected Value was : "+in);
String[] inlf = in.split(", ");
System.out.println("inlf[0]:"+inlf[0]+" inlf[1]:"+inlf[1]);
results.append("Surname \tFirst \teTag \tMemberNo \tSex \tYOB " +
"\tTel \tAddress \t\t\tClub\n");
Iterator it = members.iterator();
while(it.hasNext())
trimember test = (trimember) it.next();
if (test.last.equals(inlf[0])&&test.first.equals(inlf[1]))
results.append(test.toString()+"\n");
namefld.requestFocus();
public class trimember implements Comparable
String eTag;
public String memberNo;
public String first;
public String last;
String gender;
String yob;
String tel;
String addr;
String club;
public trimember(String eT, String me, String fi, String la,
String ge, String yo, String te, String ad, String cl)
eTag = eT;
memberNo = me;
first = fi;
last = la;
gender = ge;
yob = yo;
tel = te;
addr = ad;
club = cl;
//To String method to output string of details
public String toString()
return last + "\t" + first + "\t" + eTag + "\t" +
memberNo + "\t" + gender + "\t" + yob + "\t"+ tel + "\t" +
addr + "\t" + club;
//Compare and sort on Last name
public int compareTo(Object o)
trimember com = (trimember) o;
int lastCmp = last.compareTo(com.last);
int firstCmp = first.compareTo(com.first);
int memCmp = memberNo.compareTo(com.memberNo);
if (lastCmp == 0 && firstCmp !=0)return firstCmp;
else if (lastCmp==0&&firstCmp==0)return memCmp;
else return lastCmp;
}Edited by: Roger on Nov 3, 2007 11:50 AMPlease don't cross-post. It is considered very rude to do that here:
http://forum.java.sun.com/thread.jspa?threadID=5233033&messageID=9953169#9953169 -
Adobe form created in LiveCycle does not remember user input
Adobe form created in LiveCycle does not remember user input when the file has been re-opened after it has been saved.
Example:
"Check box" that has been selected and who have registered Action script (may be that it should be disabled), seems to be reset when the file is re-opened, although it apparently is checked.
Are there settings or script that can prevent this?Hi there,
usually if the values are not kept in form after saving and re-opening the form, it would be because of your code... or because it is not Reader Extended PDF...
If your code has a function which is to return a value to your field without it to be working based on your Design, it will reset any data..(variables)
Which means...
e.g.: You have an array/var/JSONobject which you populate varying on the data entered in the design, as long as you are in the actual form, without closing and re-opening the form, it will keep all values inside that array / variables / JSONobject. But, once the form closed and re-opened, if you have a function that returns a value to your field, whatever the field, from any variable in the script it will return nothing because every variables are reset. To avoid such a thing, you must repopulate all variables that were assigned previously before closing the PDF Form. To do so, I recommend to have a page(hidden) which contains every important values according to that function and you must repopulate those variables according to the values in the keepVar page...
If you do not have any function that returns a value to a field based on your variables, this is not the solution you are looking for and I am not aware of the reason why it behaves like this... Maybe more information on the behaviour of your form would help locate the issue...
Hope this help -
How to pass user input in automator to a variable?
I want to ceate a workflow/application to
-create a new folder eg Batch001 in directory B
-grab a group of folders in directory A
-and move them to Batch001
-create an archive of Batch001
-create a new set of empty folders in directory A
I thought I had this worked out, and planned to create a small applescript to grab a user input, then pass it to a variable. Figured if I do that at the beginning I can use the variable to create the Batch folder name, which I would enter manually. There will be a number of them, but not hundreds.
I have an applescript in automator to show a dialog, but ti does not seem to pass anything to the results. Even if I just use a simple dialog no results are passed. If I run it in actionscript editor it shows a result as expected.
on run {input, parameters}
--Display Dialog and Get Input
display dialog "Batch Number?" default answer "BatchXXX"
--Get Answer & Return Comment
set input to (text returned of result)
return input
end runI tried that, but when I run my workflow, it fails and I get an error message: The action “Rename Finder Items” encountered an error.
Here are a couple of screenshots of my workflow: -
Some offerings are missing user input, some are not mapping to activites
Seemingly out of the blue my system has stopped mapping request offering answers to (manual) activities (mapping to the SR itself works), neither OotB properties or custom properties. This only happens when submitting them from the portal (ALL
offerings)
Also, some requests are even missing user input (and obviously no mapping is possible).
This issue seem to affect all users. Even admins
I have tried restarting the web content server and also the website on the sharepoint server. I have also tried creating a brand new template and offering in a brand new MP.
I have been able to track down a ca. point in time this issue arose, but not found anything in logs anywhere (except SMPortalTrace). Checked web content server event log and website log, SQL log, event log on both management servers.
I have checked the SMPortalTrace.log and for every request submitted I get an error (not visible in the portal) - some is in danish, so I have translated at the best of my ability:
Failed to parse the description with links., System.ArgumentNullException: [ArgumentNull_Generic]
Ressourcestrings for troubleshooting is not available. Keys and arguments often contains enough information to start the troubleshooting a problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.30214.00&File=mscorlib.dll&Key=ArgumentNull_Generic
ParameterName: input
At System.Text.RegularExpressions.Regex.Matches (String input)
At Microsoft.Enterprisemanagement.ServiceManager.Portal.RequestOfferingSilverlightModule.UriParser.ParseDescription(string description)
The system is SCSM 2012 R2 UR2 (except the SP part of the portal)
Update:
I found that if the user input is missing even from the SR then the error does not present itself in the SMPortalTrace.log, only if the user input goes through (but is not mapped to activities).
http://codebeaver.blogspot.dk/The issue seems to be related to a syntactically valid type projection in the Service Request form (customized) - I added a component to the existing projection. As the template that a request offering is based on has a reference to this projection I guess
the code that creates the Service Request submitted from the portal somehow ignores the "unwanted" type projection component, and instead of not submitting the request it continues but is unable to map into child activities. I will try and reproduce
this in more detail.
Solution: Revert to original type projection in the SR form and everything went back to normal.
http://codebeaver.blogspot.dk/ -
How to accept user inputs from sql script
I want to create Tablespace useing sql script , but the location of the data file I need accept from user . (to get the location of the data file ) .
How can I accept user input from pl/sql .
Example :
CREATE TABLESPACE TSPACE_INDIA LOGGING
DATAFILE 'H:\ORACLE_DATA\FRSDB\TSPACE_INDI_D1_01.dbf'
SIZE 500M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;here I need to accept location of the datafile from user ie : 'H:\ORACLE_DATA\FRSDB\TSPACE_INDI_D1_01.dbf'Hi,
Whenenever you write dynamic SQL, put the SQL text into a variable. During development, display the variable instead of executing it. If it looks okay, then you can try executing it in addition to displaying it. When you're finished testing, then you can comment out or delete the display.
For example:
SET SERVEROUTPUT ON
DECLARE
flocation VARCHAR2 (300);
sql_txt VARCHAR2 (1000);
BEGIN
SELECT '&Enter_The_Path'
INTO flocation
FROM dual;
sql_txt := 'CREATE TABLESPACE SRC_TSPACE_INDIA LOGGING
DATAFILE' || flocation || ' "\SRC_TSPACE_INDI_D1_01.dbf" ' || '
SIZE 500M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL ';
dbms_output.put_line (sql_txt || ' = sql_txt');
-- EXECUTE IMMEDIATE sql_txt;
END;
/When you run it, you'll see something like this:
Enter value for enter_the_path: c:\d\fubar
old 5: SELECT '&Enter_The_Path'
new 5: SELECT 'c:\d\fubar'
CREATE TABLESPACE SRC_TSPACE_INDIA LOGGING
DATAFILEc:\d\fubar
"\SRC_TSPACE_INDI_D1_01.dbf"
SIZE 500M AUTOEXTEND ON NEXT 1280K MAXSIZE
UNLIMITED
EXTENT MANAGEMENT LOCAL = sql_txt
PL/SQL procedure successfully completed.This makes it easy to see that you're missing a space after the keyword DATAFILE. There are other errrors, too. For example, the path name has to be inside the quotes with the file name, without a line-feed between them, and the quotes should be single-quotes, not double-quotes.
Is there some reason why you're using PL/SQL? In SQL, you can just say:
CREATE TABLESPACE SRC_TSPACE_INDIA LOGGING
DATAFILE '&Enter_The_Path\SRC_TSPACE_INDI_D1_01.dbf'
SIZE 500M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;though I would use an ACCEPT command to given a better prompt.
Given that you want to use PL/SQL, you could assign the value above to sql_txt. If you need a separate PL/SQL variable for flocation, then you can assign it without using dual, for example:
DECLARE
flocation VARCHAR2 (300) := '&Enter_The_Path';The dual table isn't needed very much in PL/SQL.
Edited by: Frank Kulash on Jan 10, 2013 6:56 AM -
How to write table name in SQL according to the user input
hi
i want to select data from a table , and the table name, field name is input by the user, for example, user input table name T1, field name F1 and i want to construct a SQL like select F1 into a_var from T1 . how does the SQL statement written? thanks for your advice.hi
for ur requirement u should go for field sysmbols...
dynamic internal tables..
u can chk this....
TYPE-POOLS : slis.
PARAMETERS : p_struc LIKE dd02l-tabname.
DATA : it_fieldcat TYPE lvc_t_fcat,
t_output TYPE REF TO data .
FIELD-SYMBOLS: <t_output> TYPE table ,
<wa_output> TYPE ANY,
<fval> TYPE ANY.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
i_structure_name = p_struc
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_INTERNAL_TABNAME = I_INTERNAL_TABNAME
CHANGING
ct_fieldcat = it_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
IF sy-subrc <> 0.
MESSAGE i000(bctrain) WITH 'MERGE FAILED'.
*ELSE.
MESSAGE i000(bctrain) WITH 'MERGE SUCCESS'.
ENDIF.
CREATE DATA t_newline LIKE LINE OF <t_dyntable>.
ASSIGN t_newline->* TO <fs_dyntable>.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
I_STYLE_TABLE =
it_fieldcatalog = it_fieldcat
I_LENGTH_IN_BYTE =
IMPORTING
ep_table = t_output
E_STYLE_FNAME =
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ASSIGN t_output->* TO <t_output>.
SELECT * up to 10 rows FROM
(p_struc) INTO
CORRESPONDING FIELDS OF
TABLE <t_output>.
*write : / 'dynamic table created'.
LOOP AT <t_output> ASSIGNING <wa_output>.
DO.
ASSIGN component sy-index of structure <wa_output> to <fval>.
IF sy-subrc <> 0.
WRITE : /.
EXIT.
ELSE.
WRITE : <fval>.
ENDIF.
ENDDO.
ENDLOOP.
Message was edited by:
Premalatha G -
Prompting for user input in nested select statements
I recently rewrote a query to use a nested select statement instead of specifying every SELECT field on the GROUP BY line. Here's the query which works perfectly with hard-coded values of '030', '01/01/11', and '12/31/11'.
SELECT T0.[CardName] AS Customer, T0.[CardCode] as 'Cust ID', T0.[Phone1] as Phone, T0.[CntctPrsn] as 'Contact Person', T0.[Address], T0.[City], T0.[State1] as State, T0.[ZipCode] as 'Zip Code', T0.[Country], T1.[TotalSales]
FROM OCRD T0
INNER JOIN
(SELECT I.[CardCode] AS CardCode, SUM(I.[DocTotal]) AS TotalSales
FROM OINV I
WHERE left (I.[CardCode], 3) = '030' AND (I.[DocDate] >= '01/01/11' AND I.[DocDate] <= '12/31/11')
GROUP BY I.[CardCode]) T1
ON T0.[CardCode] = T1.[CardCode]
ORDER BY T0.[CardName]
When I try to prompt for the left 3 characters of the CardCode (or the dates), ie.
WHERE left (I.[CardCode], 3) = [%0] AND (I.[DocDate] >= '01/01/11' AND I.[DocDate] <= '12/31/11')
I get an error "Column 'OCRD.CardName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause".
It's like putting a user variable in the inner SELECT made it part of the outer SELECT which is exactly what I was trying to avoid by re-writing this query with the inner SELECT.
Can anyone explain what SQL Server is doing here and how to fix it?Thanks Gordon. That's how I originally wrote the query and it works fine. But I was disturbed that I had to GROUP BY every field in my SELECT statement when I really only wanted to group by CardCode. So I did some research and came up with this where the inner select still groups by only CardCode and still takes user input. I don't really understand why you need the commented SELECT statements in the SET lines, but you do. Something about using real table fields for variables.
DECLARE @startDate datetime
DECLARE @endDate datetime
DECLARE @rep varchar(10)
SET @rep /* SELECT T0.[CardCode] FROM ORDR T0 WHERE T0.[CardCode] */ = '[%0]'
SET @startDate /* SELECT T0.[DocDate] FROM OINV T0 WHERE T0.[DocDate] */ = '[%1]'
SET @endDate /* SELECT T0.[DocDate] FROM OINV T0 WHERE T0.[DocDate] */ = '[%2]'
SELECT T0.[CardName] AS Customer, T0.[CardCode] as 'Cust ID', T0.[Phone1] as Phone, T0.[CntctPrsn] as 'Contact Person', T0.[Address], T0.[City], T0.[State1] as State, T0.[ZipCode] as 'Zip Code', T0.[Country], T1.[TotalSales]
FROM OCRD T0
INNER JOIN
(SELECT I.[CardCode] AS CardCode, SUM(I.[DocTotal]) AS TotalSales
FROM OINV I
WHERE left (I.[CardCode], 3) = @rep AND (I.[DocDate] >= @startDate AND I.[DocDate] <= @endDate)
GROUP BY I.[CardCode]) T1
ON T0.[CardCode] = T1.[CardCode]
ORDER BY T0.[CardName]
FOR BROWSE
Maybe you are looking for
-
ok so I just bought a new dell 20" 1650x1080 display as a secondary display for my macbook, replacing my old 17" crt. I was using the mini dvi out to VGA plug which I am also using right now on the new dell display. but my dell monitor also has DVI i
-
Error 1935 when downloading 8.1.2
When downloading 8.1.2 using Vista premium error 1935 when installer is configuring and will go no further. Has anyone had this problem
-
Hello everyone today I am working on a mounted on a Red Hat Enterprise PKI Linux Server release 5.5 (Tikanga) is Easycert 5.2.2.15. We need to know what are the necessary data that we have to go to the PKI so it can generate certificates of users in
-
How do I know if I am using WLS 7.0 with 32 bit or 64 bit server?
I have been told that it is possible to install WLS 7.0 for use with a 32 bit or 64 bit server. I am wondering the following: 1. How would WLS 7.0 install by default on a 32 bit server? 2. How would WLS 7.0 install by default on a 64 bit server? 3. I
-
My Powerbook screen goes dark or black if I push it open further than 90 degrees. Why would it do that? many thanks