Validate dates in oracle forms
Hello everyone. I have a column of field in my form, ORDER_START_DATE.The date format is DD. LUN. RRRR
Now, I want to add a validation to this area and I know that you have allowed less value as a property field.
I want to make sure any allowed value is SYSDATE but sysdate in format DD. LUN. RRRR. In other words, today should be the less allowed excluding the hour value or a minute.
Can someone help me to achieve this goal in oracle forms?
Thank you very much.
go to the open palette field ORDER_START_DATE property
to DD "Format mask". LUN. RRRR
in "the lowest allowed Value" value $$DATE$ $
control should be done automatically by forms in the future
Tags: Oracle Development
Similar Questions
-
Reading excel data file in Oracle form data blocks
Hi all
I want to read the data from the excel file in the data block of the module of the form. There are many resources available that explain how to put the data in oracle forms in the excel sheet, but I can't find a single resource to achieve this functionality. Can someone please help me get around this problem. Any help will be much appreciated.
Thanks in advance
BilalBilal,.
There is little documentation available through My Oracle Support, which shows how to read an Excel file in a form, but you need a support contract with Oracle to access the document (how to read data from an EXCEL worksheet in a form using WebUtil Client_OLE2 [813535.1 ID]).I've seen this issue come up in the forum from time to time, so I wrote a small form demo which illustrates playback in Excel in a form. Discover forms: how to read an Excel file in a form. This demonstration uses the WebUtil library, so you must make sure have WebUtil correctly configured in the Forms Designer, as well as on your application server.
Hope this helps,
Craig B-)If someone useful or appropriate, please mark accordingly.
-
Validate the data in the form of Web
We want to validate data in the web form in planning through JavaScript Code?
How we do it and what is the location of the JavaScript file?
One last thing... If we make changes in the Java Script code, then it is necessary to stop and start planning the server or application?
Thanks in advance... :-)Yes you can do this by using javascript code.
If you want to learn more about the use of custom javascript must be your starting point:-http://download.oracle.com/docs/cd/E12825_01/epm.111/hp_admin/frameset.htm?apa.html
There is also another document that may be useful:-http://www.oracle.com/technetwork/middleware/bi-foundation/planning-javascript-v3-130516.pdfIf you use any other tomcat Web server, you will need to restart the service if you make changes to the code.
See you soon
John
http://John-Goodwin.blogspot.com/ -
How can we export itno csv data file for oracle forms
Hello
How can we export itno csv data file for oracle forms
For example. I have the block called A.what never the data displayed on a block, when I click on a button, displays the block data, must be exported to the csv file.
My application is running on the unix operating system.
Please help on this.
First of all. What is your version of forms (for example: 11.1.2.2.0 not 11g). Finally, who will use the .csv file? If it is a user on their client computer - CLIENT_TEXT_IO TEXT_IO or WebUtil are standard packages used to export data to a file of Oracle Forms.
The amount of data to be exported? If you export only a couple hundred lines - export of Froms will be OK. If you export more lines than that (300 + lines) then the export will be extremely slow to your username. Keep in mind that forms is not designed to perform data exports - there are better tools available for this...
Craig...
-
Change the mask of the executing (Oracle forms 6i) date field format
Hello
I use Oracle forms 6i. I have a domain where I use to store dates. I need to change the format mask of this date the runtime field.
Y at - it no set_item_property built in that I can use to achieve this?
Kind regards
Bet.
Published by: 1009523 on June 3, 2013 11:11Part 2, help information on the Format mask item property; you will need to make sure that you set the property correctly.
Sorry, I had to drill two answers but my first attempt surpassed the eligible characters in an answer ;-)
Format Mask property Description Specifies the display format and input accepted for data in text items. Applies to text item Set Form Builder, programmatically Refer to Built-in n GET_ITEM_PROPERTY n SET_ITEM_PROPERTY Required/Optional optional Usage Notes Valid format masks for character strings, numbers and dates are described in the following tables. Character Strings The following table describes valid format masks for character strings. Element Example Description FM FMXX99 Fill mode: accept string as typed, do not right justify. Allows end user input string to be shorter than the format mask. X XXXX Any alphabetic, numeric, or special character. End user input string must be exact length specified by format mask. 9 9999 Numeric characters only. End user input string must be exact length specified by format mask. A AAAA Alphabetic characters only. End user input string must be exact length specified by format mask. Character String Examples Format Mask Description XXAA Will accept: --ab, abcd, 11ab; will not accept: --11, ab11, or ab--(must use XX to accept hyphens and other special characters). XXXX Will accept any combination of alphabetic, numeric, or special characters: --ab, abcd, 11ab, --11, ab11, or ab--. Will accept 1234 or abcd; will not accept 123 or abc. (To accept input string shorter than mask, use FMXXXX.) FMXX99 Will accept ab12, ab1, ab followed by two spaces; will not accept 12ab or abcd. (To produce the Form Builder Version 3.0 Alpha datatype, use FMAAAAAA.) n To embed additional characters such as a hyphen (-) or a comma (,), surround the character with double-quotes ("). n Embedded characters are separate from text item values and are not collated along with text item values, even when the end user enters them. NUMBERS The following table describes valid format masks for numbers. Element Example Description 9 9999 Number of nines determines display width. Any leading zeros will be displayed as blanks. 0 0999 Display leading zeros. 0 9990 Display zero value as zero, not blank. $ $9999 Prefix value with dollar sign. B B9999 Display zero value as blank, not "0". MI 9999MI Display "-" after a negative value. PR 9999PR Display a negative value in
. comma 9,999 Display a comma in this position. For correct behavior in multilingual applications, substitute G to return the appropriate group (thousands) separator. period 99.99 Display a decimal point in this position. For correct behavior in multilingual applications, substitute D to return the appropriate decimal separator. E 9.999EEEE Display in scientific notation (format must contain exactly four "E"s). FM FM999 Fill mode: accept string as typed, do not right justify. n When you mask a number with nines (9), Form Builder adds a space in front of the number to accommodate the plus (+) or minus (-) sign. However, since the plus sign is not displayed, it appears as if Form Builder adds a space in front of the number. (The minus sign is displayed.) n To embed additional characters such as a hyphen (-) or a comma (,), surround the character with double-quotes ("). n Embedded characters are separate from text item values and are not collated along with text item values, even when the end user enters them. NUMBER Examples Format Mask Description FM099"-"99"-"9999 Displays the social security number as formatted, including hyphens, even if end user enters only nine digits.To create a Social Security column, create an 11-character column, set to fixed length, with a format mask of 099"-"99"-"9999. This mask will accommodate Social Security numbers that begin with zero, accepting 012-34-5678 or 012345678 (both stored as 012345678). 99999PR Accepts -123; reformats as <123>. 999MI Accepts -678; reformats as 678-. 9.999EEEE Displays as 1.00E+20. How Forms handles length mismatches If a runtime user enters a numeric string that exceeds the format mask specification, the value will be rejected. For example: Format Mask User enters Result 99.9 321.0 Invalid 99.9 21.01 Invalid 99.9 21.1 21.1 99.9 01.1 1.1 In contrast, if a numeric value fetched from the database exceeds the format mask specification for its display field, the value is displayed, but truncated, with rounding, to fit the mask. (The item itself within the Forms application retains its full value.) For example, if the database held the value 2.0666, and the format mask was 99.9, the value displayed to the user would be 2.1. However, the value of the item within the form would be the full 2.0666. Dates The following table describes valid format masks for dates. Element Description YYYY or SYYYY 4-digit year; "S" prefixes "BC" date with "-". YYY or YY or Y Last 3, 2, or 1 digits of year. Y,YYY Year with comma in this position. BC or AD BC/AD indicator. B.C. or A.D. BD/AD indicator with periods. RR Defaults to correct century. Deduces the century from a date entered by comparing the 2 digit year entered with the year and century to which the computer's internal clock is set. Years 00-49 will be given the 21st century (the year 2000), and years from 50-99 will be given the 20th century (the year 1900). MM Month (01-12; JAN = 01). MONTH Name of month, padded with blanks to length of 9 characters. MON Name of month, 3-letter abbreviation. DDD Day of year (1-366). DD Day of month (1-31). D Day of week (1-7; Sunday=1). DAY Name of day, padded with blanks to length of 9 characters. DY Name of day, 3-letter abbreviation. J Julian day; the number of days since January 1, 4712 BC. AM or PM Meridian indicator. A.M. or P.M. Meridian indicator with periods. HH or HH12 Hour of day (1-12). HH24 Hour of day (0-23). MI Minute (0-59). SS Second (0-59). SSSSS Seconds past midnight (0-86399). /. , . Punctuation is reproduced in the result. "..." Quoted string is reproduced in the result. FM Fill mode: assumes implied characters such as O or space; displays significant characters left justified. Allows end user input to be shorter than the format mask. (Use in conjunction with FX to require specific delimiters.) FX All date literals must match the format mask exactly, including delimiters. n When you prefix a date mask with FX, the end user must enter the date exactly as you define the mask, including the specified delimiters: Date Examples Format Mask Description FXDD-MON-YY Will accept 12-JAN-94, but will not accept 12.JAN.94 or 12/JAN/94 because the delimiters do not match the mask. Will not accept 12JAN94 because there are no delimiters. Will accept 01-JAN-94 but will not accept 1-JAN-94. FMDD-MON-YY Will accept 01-JAN-94. Will also accept the entry of other delimiters, for example 01/JAN/94 and 01 JAN 94. However, will not accept 01JAN94. Will accept 1-JAN-94, converting it to 01-JAN-94. DD-MON-YY Will accept 12.JAN.94, 12/JAN/94 or 12-JAN-94. Note: Any delimiter characters will be accepted, but if delimiters are omitted by the end user, this mask will interpret date characters as a delimiters. Will accept 12-JAN94, (but will erroneously interpret as 12-JAN-04); but will not accept 12JAN94, because "AN" is not a valid month name. n Use of a format mask only affects how the data looks. Form Builder stores full precision, regardless of how the data is presented. n Embedded characters are separate from text item values and are not collated along with text item values, even when the end user enters them. n To embed additional characters such as a hyphen (-) or a comma (,), surround the character with double-quotes ("). Note, however, that double-quotes themselves cannot be used as a character. In other words, trying to achieve output of DD"MM by specifying a mask of DD"""MM would not work. Format Mask Description FMMONTH" "DD", "YYYY Displays the text item data in the specified date format: JANUARY 12, 1994, including the appropriate blank spaces and comma. FMDD-MONTH-YYYY Displays as 12-JANUARY-1994. DY-DDD-YYYY Displays as WED-012-1994. Note: for input validation including day of the week, a mask that allows specific determination of the day is required, such as this example or DY-DD-MM-YY. n When you use day of the week formats, be sure that the data includes day of the week information. To avoid illogical masks, display also either the day of the year (1-366) or the month in some format. Format Mask Description DD-MONTH-YYYY Displays as 12-JANUARY-1994. DY-DDD-YYYY Displays as WED-012-1994. DY-DD-MON-YY Displays as WED-12-JAN-94. Be sure to include month. Avoid masks such as DY-DD-YY, which could generate an error. NLS Format Masks The following table describes valid National Language Support (NLS) format masks. Element Example Description C C999 Returns the international currency symbol. L L9999 Returns the local currency symbol. D 99D99 Returns the decimal separator. G 9G999 Returns the group (thousands) separator. comma 9,999 Displays a comma in this position. period 9.999 Displays a decimal point in this position. Displays a decimal point in this position. NLS Format Mask Examples Format Mask Description L99G999D99 Displays the local currency symbol, group, and decimal separators: if NLS_LANG=American, this item displays as $1,600.00; if NLS_LANG=Norwegian, this item displays as Kr.1.600,00. C99G999D99 Displays the appropriate international currency symbol: if NLS_LANG=American, this item displays as USD1,600.00; if NLS_LANG=French, this item displays as FRF1.600,00. Craig...
-
Importing data from access in Oracle Forms by form 10g
Gentlemen.
How can I import the Access file data into Oracle tables.
I have tables in access about 10 how it can be imported into oracle with the same data structure.
Thanks in advanceIf you use a form 4.5 so you can use ODBC to create a data source name
and use the connection with odbc as
Logon('username@ODBC:dsnName','password');
then
execute_query; to get the access data;
then disconnection;
and logon ('oracleuser @ConnectinogString ',' password');
then use
commit;
your entire data will be copied to your oracle database. -
Create the form for enrty of data such as oracle forms tabular block by ADF Table!
Hi guru and Experts
I need some solutions for Oracle JDeveloper11g which is very essential for me.
+ Q1. Is it possible to create a form master detail which block detailed will be a tabular as like oracle forms . If possible I such example? +
Q2. How can I create a preview to the point like oracle forms overview at the point of tables?
Q3. How can I add LOV/list items / check for a table/table column?
Q4. If it is possible to insert a new record in the table of the ADF, so I need to save all your data by pressing a key SAVE event
I wish you all already taken I want developed. Please give me a better solution.
Thank you.
Zed
====A correction to the above – if you want the table to be modified/inserted you cannot drag and drop as a master-detail, because the detail will be in read only mode.
Instead first drag the captain and drop as a form of ADF
Then, drag the details below and drop it as Table of ADF.You can drag since the operations node in the data control the operation createInsert to add a button that will add a new empty row to the table.
-
Can I use Oracle Forms 11g with 9.2.0.8.0 Data Services?
Hello world.
My Department is evaluating the development tools to create new web applications and possibly migrate current buit applications with Oracle Forms 6.0.5.34.0. Our database is Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64 bit.
We read that the new version of Oracle Forms is Oracle Forms Services 11 g. Is Oracle Forms 11g compatible with Oracle9i Enterprise Edition Release 9.2.0.8.0 Services - 64 bit? or we will have to migrate our Oracle 11g RDBMS?
If our database is compatible, what would we have needed to develop and deploy applications with Oracle Forms 11 g Services?
Thanks in advance.That it is compatible or not: 9.2.0.8 database is supported, which means you get patches for it. So even if it's compatible I would opt to upgrade to a newer version, because I wouldn't feel uncomfortable that the product is not supported by out in production.
Take a look at the matrix of certification for the supported configurations
http://www.Oracle.com/technetwork/middleware/downloads/FMW-11gr1certmatrix.xlsWith regard to the requirements; most of the stuff is on the forms OTN homepage:
http://www.Oracle.com/technetwork/developer-tools/forms/or to the documentation:
http://download.Oracle.com/docs/CD/E17904_01/index.htmsee you soon
-
How to post several lines in oracle FORM
Hello
I created a custom form that has a header block and a block of retail. the retail block can have multiple lines. I have a requirement that lines (multi-line) block detail data will be validated during the recording of the record. Please indicate how we can do?
Please note that the data are not saved and yet, it will be validated during registration or any click of a button.
Please notify. It is urgent.
Thank you
Pirre
Make the echo of Christian question... What do you mean by "validating"? You have not yet defined what it means in your scenario!
Is your retail block a block of the base table, or a control block? Rather than the trigger key - Commit, you could use the triggers we insert or we--update since these will be triggered for each line that oracle Forms will insert or update. If you want to keep your validation in the trigger key code - Commit, you will need to loop through all the rows in your detail block and validate each line manually. If the validation logic is the same for inserts and updates - you can put this logic in a unit of program (procedure) and then call this procedure in the Insert and update triggers on.
What about using the trigger when-validate-Record? This trigger fires as you navigate from one line to the other, but it will save a loop block (if you continue to use the "enter" key).
Craig...
-
Alignment problem Date 6i Oracle report in Arabic Windows 7 (Professional)
Hello
6i Oracle form and report work very well under windows 7, but we are facing problems with Arabic alignment (Date of the Hijra). like his appear 21/11/1431 and we would like to show 21/11/1431.
Report 6i, we can change the format, but we have hundreds of reports. and same report another excellent work up to version 5.3
Pleae help
Thank you
Contact the Oracle Support for assistance. ~ Robear Dyer (PA Bear) ~ MS MVP (that is to say, mail, security, Windows & Update Services) since 2002 ~ WARNING: MS MVPs represent or work for Microsoft
-
Hi Experts,
JDeveloper 12.1.3.0.0
I have a VO based on entity object. With a column of the VO is transient attribute (I created).
I need to call a stored procedure for each row in the transitional attribute and display the data in the form of af: table. As well as other attributes.
So can anyone suggest how can I achieve this?
Thank you
AR
I think that you need a stored function (which returns the value) in this case, is not?
Take a look at:
https://docs.Oracle.com/CD/B31017_01/Web.1013/b25947/bcadvgen005.htm
and search for:
Invoking stored function with only Arguments in
call your function in the Get attribute and return value accessor...
-
Mr President
When possible in Oracle Forms to insert a second line based on 1st row, so why not in the ADF?
The user just enter data in the Module of sales in one line of a Bill as below
and it is displayed in two rows in financial Module.like below how to proceed in the ADF.
You can see that invoice line contains the sales tax and the gross sales amounts, then it is posted to the financial Module above two lines.
How to make ADF
Respect of
What I realized, this is:
-You have a table in you screen.
-You call CreateInsert 2 times to create 2 rows at the same time.
-You will enter value in a specific column (c1) line1
Looking for the value that you entered in row1 can be completely copied in the same column (c1), but in line2. is this correct?
If so try to do the following:
1. in the table inputText (c1) column set autoSubmit = true and setValueChangeListener to a method in backbean
2. in the inputTextValueChangeListener method to write this code
public void inputTextValueChangeListener(ValueChangeEvent valueChangeEvent) { DCIteratorBinding tableIter = (DCIteratorBinding) BindingContext.getCurrent().getCurrentBindingsEntry().get("tableIteratorName");// write table iterator name from pageDef. for (int i = 0; i < tableIter.getViewObject().getEstimatedRowCount(); i++) { ViewRowImpl myRow = (ViewRowImpl) tableIter.getRowAtRangeIndex(i); EntityImpl entityImpl = myRow.getEntity(0); if (EntityImpl.STATUS_NEW == entityImpl.getEntityState()) { System.out.println("New row found"); myRow.setAttribute("AttributeName", valueChangeEvent.getNewValue());// write attribute name } } }
3 - Add inputText id in the partialTrigger table
4 - pageDef. Set of table iterator rangeSize = "-1".
-
FILL MONTHS DYNAMICALLY IN THE ITEM VIA ORACLE FORMS GROUP RECORDING LIST
Experts
I have a query in oracle forms. I need to fill Last_Month, Current_Month & Next_month based on Sys_Date in the list box. I am able to get the values in SQL if I run the query below, but when I use the version of Oracle Forms 10.1.2.0.2, I could not get the values of Mr. can you please guide me where I'm wrong.
declare
v_rg_id recordgroup: = NULL;
Number of V_errorcode;
v_rg_salmth varchar2 (30): = "MONTHS";
Begin
v_rg_id: = find_group (v_rg_salmth);
If id_null (v_rg_id) then
v_rg_id: = create_group_from_query (v_rg_salmth,
"WITH (AS MONTH_COUNTER)
SELECT LEVEL 2 AS ID
OF THE DOUBLE
CONNECT BY LEVEL = 2
UNION
SELECT LEVEL AS ID
OF THE DOUBLE
CONNECT BY LEVEL = 0
)
SELECT TO_CHAR (ADD_MONTHS (TO_CHAR (SYSDATE), ID), MONTH) AS MONTH_COUNTER MONTHS ');
v_errorcode: = populate_group (v_rg_id);
If v_errorcode = 0 then
message ("record group filled with data");
on the other
message ("V_errorcode is:" | ") v_errorcode);
end if;
End if;
populate_list('MASTER.) MONTH, v_rg_id);
end;
The rather complicated query, try
SELECT ADD_MONTHS (SYSDATE-1) TO DOUBLE
UNION ALL
SELECT SYSDATE DOUBLE
UNION ALL
SELECT THE DOUBLE ADD_MONTHS(SYSDATE,1)
BTW. to use a query to populate a list, you must select two values, a label and a value, check it fill listitems dynamically - Andreas Weiden - on Oracle
-
Unable to connect to the database from Oracle Forms server
Hello
I installed Oracle Forms on top of Weblogic server. When I try to connect to an Oracle Forms home by TNS naming database, it returns error "ORA-12504". It works fine when I use EZConnect.
D:\Oracle\Middleware\FRHome\BIN >. \sqlplus myuser/mypass@auhdb2
SQL * more: version 11.1.0.7.0 - Production on Sun Sep 28 10:28:34 2014
Copyright (c) 1982, 2008, Oracle. All rights reserved.
ERROR:
ORA-12504: TNS:listener did not have the SERVICE_NAME in CONNECT_DATA
D:\Oracle\Middleware\FRHome\BIN > @//auhdb2/auhdb2 mypass/myuser mypasssqlplus
SQL * more: version 11.1.0.7.0 - Production on Sun Sep 28 10:28:55 2014
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With partitioning, OLAP, Data Mining and Real Application Testing options
SQL >
Here are the specifications of the environment:
Server operating system: Windows 2008 R2 64-bit EA
WebLogic: Weblogic Version 10.3.6
Forms and reports: 11.1.2.2
Database, I am trying to connect to: Oracle Database 11 g Enterprise Edition Release 11.2.0.1.0 on Windows 2003 Server
Tnsnames configuration in D:\Oracle\Middleware\FRHome\network\admin:
AUHDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = auhdb2) (PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = auhdb2)
)
)
Thanks in advance.
I want to update this post because I understood what was the matter.
The TNSNAMES file. ORA file must be created in ORACLE_INSTANCE/config, not in %ORACLE_HOME%\FRHome\network\admin
It was interesting for me!
-
Insert multiple record Oracle forms 6i
Hi all
I have a single column of field Field1, button, in the form TEXT_ITEM1.
After giving the sales order number in Field1, when should press us the button, the items (item_code) shown in the TEXT_ITEM1.
I went through the discussion Insert several Oracle forms 6i, 9i/10 g recordbut did not exactly how to write the loop button when button pressed.
first_record;
<<record_loop>>
loop
insert into ....
exit when :system.last_record = 'TRUE';
next_record;
end loop record_loop;My request for the loop is.
Select RI_ITEM_CODE from OT_REQ_ITEM
Where REQ_NO =: field1;
Please suggest
Thanks in advance.
Kind regards
Afzal.
Forgive me if I am oversimplifying this, but why not just base your block of data to the table: XXTABLE. Then, you just put your form in design query (F7). Enter the value of 1122 in the area of the INVOICE_NUM and selects Execute Query (F8). Then forms does all the work to extract and display the records without having to write code to do this. This saves you having to write the code to perform and DML as well because the forms will take care of the Insert, Update and Delete automatically when your users click on save or press F10 (if I remember correctly).
If you must absolutely query and display your data manually, then you cannot use the standard SELECT INTO method because it will only show 1 record. You need to loop through your recordset and to manually edit the records in your block after you assign a value to the line. For example:
/* Sample Button Code */ DECLARE v_invoice_num NUMBER := BLOCK.TEXT1; CURSOR Get_Items (p_invoice NUMBER) IS SELECT INVOICE_NUM, ITEM_CODE FROM XXTABLE WHERE invoice_num = p_invoice; BEGIN GO_BLOCK('BLOCK'); CLEAR_BLOCK(NO_VALIDATE); FOR rec in Get_Items(v_invoice_num) LOOP :BLOCK.INVOICE_NUM := rec.invoice_num; :BLOCK.ITEM_CODE := rec.item_code; Next_Record; END LOOP; END:
I really don't like this method, but it could work.
Craig...
Maybe you are looking for
-
Thunderbird stopped using my group lists what I do?
When I try to send an email using a list of group, which has worked before, a message appears "is not a valid email address" and then she was named group quotes list. Remember this list worked until two days ago.
-
HP Envy 14 1190ea AMD driver problem
Hello.I searched for some time now to update the drivers for the graphics card processor. But I have not found a solution. Yes, after running Windows Update two days ago, I discovered that the switchable graphics are no longer working and everytime I
-
Public static sound speakers G500s
Yesterday, I bought a G500s, and now I want to connect it with my (speaker with battery) Ion tailgaterbut when I connect it with the tailgater I have a static noise, and if I want to load the tailgater (and leave only it connected to the laptop) a hi
-
windows media player control in labview
Hello I'm having trouble controlling a WMP in LabVIEW using ActiveX controls is... What I have to do is to have a control to go from image to image. I did something, but when I slide the crontroller, it suddenly crashes? Also: when I play the video i
-
Cannot connect to Windows and Microsoft updates
Cannot receive Microsoft or Windows updates. I read some responses to download manually. How this is done, I'm not a computer guru!