© 2012 R&F Consulting, Inc. All rights reserved. For a complete copyright notice, please see the end of this document.
COMPLETELY customize the information this app stores and displays. (Well, cross-reference, search and create reports, too.)
A personalized to-do list. Business transactions you care about. A coin collection with images. Anything.
Modern: Local first - works offline, no cloud necessary. • Encryption - your mobile data is secure from theft. • Reliable - based on SQLite, the most widely deployed database engine in the world.
A solid selection of basic data building blocks: Barcode (scan) • Number • Currency • Date • Distance (mileage) • Drawing (signature capture, signature cards, …) • Duration • Email • Image • iOS Contact (association) • Note (multi-line) • Password (hidden text) • Phone Number • Time • Text • URL (hyperlink) • Yes/No.
Supplementary data building components: Choice lists • Users Interface (UI) Glyphs (headings, line breaks, …).
Special-purpose Appliances: Location (GPS) • Time Group (time tracking) • Expense Group (expense tracking) • Mileage Group (mileage tracking).
Power-user capabilities: Calculations and Merges (user-defined Formulas). • Record cross-references - e.g., assign a known Employee to a new Time Card. • Record sharing - have multiple Records reference the same Record, e.g. multiple Orders under the same Customer. • Record composition - include Records inside other Records, e.g. an Address inside a Contact. • Record design - define Records as Types in a generic manner and reuse those Types when designing other Records.
Data Synchronization: Synchronize across multiple desktop (macOS) and mobile (iOS) devices. • Synchronize through the cloud over a wired or wireless network connection. • Zero-setup - just log your device into Apple iCloud and tap a button. • Efficient - synchronize only the data that has changed, incrementally. • Built-in data recovery - automatically detect local device or remote cloud account replacement and automatically consolidate data. • Multi-way sync support: synchronize any number of desktop and mobile devices through a single iCloud account.
“If you look at any kind of modern organization and you think, ‘What are the foremost tools of power?’ You will find that it is information.” (Ricardo Semler)
The product has been selected as an Honorable Mention (3rd-place) Winner in the “Productivity” category for an App Challenge by The Linux Foundation and Intel at the Mobile World Congress 2014.
Unlimited storage capacity and features such as reporting, cloud document exchange or time, expense and mileage tracking are available for purchase in the “App Features and Local Data” subscription.
Data synchronization across multiple devices through the cloud is available for purchase in the “App Data Synchronization” subscription.
Try before you buy for as long as 14 days.
The easyAsPieDB project is an invitation to collaborative design. Please let us know of any suggestions for improvement you might have or any problems you run into.
Please help easyAsPieDB: rate it in the App Store or write a short review for it. Thanks!
Notice | |
---|---|
![]() |
easyAsPieDB can be at first somewhat challenging to get to know in depth, but once understood often turns out to be surprisingly straightforward to use. Please make sure to take the time to learn the core concepts of easyAsPieDB information definition (“How easyAsPieDB Defines Information”) and information categorization (“How easyAsPieDB Categorizes Information”). |
Feature |
---|
• SQLite database: Atomic, Consistent, Isolated and Durable (ACID) |
• transactional integrity for data safety from memory shortage or power-loss |
• virtual storage implementation for rapid access and fluid scrolling through large databases on resource-constrained mobile devices |
Feature |
---|
• Apple iOS hardware encryption and device locking integration |
• proactive data protection monitoring |
Feature |
---|
• Records: object-oriented, compound Types (user-defined, reusable) |
• interface Glyphs (headings, line breaks, …) |
• Values: basic Types |
• Barcode (scan) |
• Big Number |
• Currency |
• Date |
• Distance (mileage) |
• Drawing (signature capture, signature cards, …) |
• Duration |
• Fractional Number |
• Image |
• iOS Contact (association) |
• Number |
• Note (multi-line) |
• Password (hidden text) |
• Phone Number |
• Time |
• Text |
• Unsigned Number |
• URL (hyperlink) |
• Yes/No |
• Calculations across numeric Values (user-defined Formulas) |
• Merges across textual Values (user-defined Formulas) |
• Choice lists |
• Composition (containment) of compound Types |
• References to shared Records of a Type |
• Type collaboration (e.g., assign an Employee to a specific Time Card, …) |
• special-purpose Appliances |
• Location (GPS) |
• Time Group (time tracking) |
• Start Time |
• End Time |
• Duration |
• Break |
• Timer |
• Expense Group (expense tracking) |
• Quantity |
• Cost |
• Amount |
• Mileage Group (mileage tracking) |
• Odometer Start |
• Odometer End |
• Distance |
• a full-fledged data design environment on a mobile device |
Feature |
---|
• Tables of associated Records |
• a tree-like structure of Collections of unlimited depth |
• nested Collections (Collections inside Collections) |
Feature |
---|
• support for over 40 locales (iOS) for data input and display |
• customizable images for Tables |
• customizable images for Collections |
• inline thumbnails of Record content (Image, Drawing) |
• inline toggle of Record content (Yes/No) |
Feature |
---|
• multi-line (configurable) Record display |
• multi-level (configurable) Record sorting |
• quick-entry Field Views (Date, Time, Duration, …) |
• Record count -based (vertical) scroll within a Table |
• Record-by-Record (horizontal) navigation within a Table |
• in-list cross-management of Referenced (linked) Records |
• portrait/landscape orientation support |
• splitter (dual-pane) support (phablets, tablets) |
• side-by-side multitasking support |
• photo capture directly inside the application |
• support for auto-capitalization, auto-correction and spell checking |
Feature |
---|
• deep-copy, compound Record duplication |
• reusable, persistent Templates (partial Records) |
Feature |
---|
• time-frame -based filters (date range: a day, a week, back/forward, …) |
• tag -based filters (pick list: referencing a particular Record of a Type) |
• text -based filters (a search bar: content matching) |
• reusable, persistent Searches with textual/numeric comparison operators (Starts With, Contains, Equals, Less Than, …) |
Feature |
---|
• Fields: column sets |
• Summary Variables: numerical value aggregation |
• Groups: row association criteria |
• Footers: Group summary lines |
• HTML CSS styling |
Feature |
---|
• publish-to-HTML |
• comma-separated values (CSV) export and import |
• backup and restore |
• cloud document exchange |
• open a Field with iOS (cross-application data sharing) |
Feature |
---|
• synchronization across multiple desktop (macOS) and mobile (iOS) devices |
• synchronization through the cloud over a wired or wireless network connection |
• zero-setup: Apple iCloud authentication only |
• efficient synchronization of data that has changed only (incremental) |
• built-in data recovery: automatic detection of local device or remote cloud account replacement with automatic data consolidation |
A Type gives a name to a piece of information, in order to describe it in a way that’s easy to understand and conceptualize. For example:
Every Type requires a Label (a textual name) to describe its purpose.
Information | |
---|---|
![]() |
In desktop PC terminology, Types correspond to file types and their extensions, for example .txt for “text” files (documents) or .jpg for “image” files (graphics). |
A Value Type is the most basic, indivisible building block of information. For example:
Value Type Label | Description | Sample |
---|---|---|
Barcode | barcode information as text | 012345678901 |
Big Number | a whole number, positive or negative (64-bit) | 90210 |
Currency | a fractional number, positive or negative, with a currency symbol | $29.95 |
Date | a date, without the time of day | January 1, 2024 |
Duration | a time interval | 2 hours, 18 minutes, 5 seconds, and 100 milliseconds |
Distance | distance in miles or kilometers (mileage) | 150mi or 250km |
Drawing | an editable graphical sketch, a signature, etc. | |
an email address | info@rfcons.com | |
Fractional Number | a fractional number, positive or negative | 29.95 |
Image | a graphical image: a photograph, an icon, etc. | |
iOS Contact | a link to an iOS Address Book Contact | |
Number | a whole number, positive or negative (32-bit) | 90210 |
Note | multi-line text | |
Password | single-line, masked (hidden) text | |
Phone Number | a phone number | 1 800 437 7950 |
Time | the time of day, without a particular date | 9:00 AM |
Text | single-line text | |
Unsigned Number | a whole number, positive, non-negative (32-bit) | 90210 |
URL | a hyperlink, such as a web site address | http://www.rfcons.com |
Yes/No | a true-or-false choice | Yes |
Only one Value can be specified at a time (or there can be no value at all).
A Choice Type is a collection of Alternatives. An Alternative requires a Label to describe what it represents. For example:
Choice Type Label | Description | Alternative Label |
---|---|---|
Major Credit Card | a piece of plastic from a financial company used for payments | VISA |
Mastercard | ||
American Express | ||
Expense Category | a category assigned to an expense for reporting purposes | Car Rental |
Entertainment | ||
Hotel |
Only one Alternative can be selected at a time (or there can be no selection at all).
An important concept to understand is that you, the user of easyAsPieDB, have the freedom to define new Choice Types and the Alternatives that are valid for a particular Choice Type.
A Record Type is the most high-level unit of information, usually something you need to keep track of. It is a collection of Fields. A Field has a particular Type (in other words, a Field is of a particular Type): a Value Type, a Choice Type, or even another Record Type. A Field also requires a Label to describe its purpose. For example:
Record Type Label | Description | Field Label | Field Type |
---|---|---|---|
Contact | a person with a first name and a last name | First Name | Text |
Last Name | Text | ||
Date of Birth | Date |
An important concept to understand is that you, the user of easyAsPieDB, have the freedom to define new Record Types and the Fields that are expected within it.
Information | |
---|---|
![]() |
What is the difference between an Alternative (in a Choice Type) and a Field (in a Record Type)? When it comes to a Choice Type, only one Alternative can be selected. When it comes to a Record Type, all Fields can be specified at the same time. |
Notice | |
---|---|
![]() |
Please note that a Type of a Field cannot be changed, once it has been assigned. You will have to delete a Field, discarding all data for that particular Field in all Records of the modified Record Type and create a new Field with a different Type. |
An important concept to understand is that a Field in a Record Type can involve another Record Type. Thus, an important issue comes up: how should one Record Type include another Record Type, exactly? Directly, like a quotation inside a paragraph in a text document, or perhaps indirectly, like a reference to a footnote outside of a paragraph in a text document (at the bottom of a page)? There are two alternatives here: Composition (of another Record Type) and Reference (to another Record Type).
Notice | |
---|---|
![]() |
Composition vs. Reference is the only part about easyAsPieDB that is a little bit tricky. Take your time to try to understand this topic. |
In Composition, a parent Record Type includes a child Record Type as an integral part of itself. For example, a Paragraph (a parent) including a Quotation (a child): it does not make sense for a Quotation to exist on its own, outside of a Paragraph (well, a Quotation would have to be on a Page or perhaps on a Cover, but it would have to be somewhere). Moreover, only one Paragraph can include the same Quotation, all other Quotations - even if identical - would have to be copies of the first one.
In Composition, a child Record Type (composed) is also called a Composed Type.
A Reference to a Record Type is an association of a parent Record Type with a child Record Type. A child Record Type is able to exist independently of a parent Record Type. For example, a Paragraph (a parent) indicating a Footnote (a child) through a superscript (a number that is set slightly above the normal line): a Footnote can exist on its own even without any Paragraphs at all. Moreover, multiple Paragraphs can point to the same Footnote.
In a Reference, a child Record Type (pointed to) is also called a Referenced Type.
In Composition, the information for a child Record Type is created and discarded at the same time as the information for a parent Record Type.
In a Reference, when the information for a parent Record Type is created, the information for a child Record Type initially does not even have to exist and can be created and associated with a parent Record Type at a later time. The information for a child Record Type is able to exist independently and survives the information for a parent Record Type, if the latter is deleted.
In Composition, there is always one parent Record Type and one child Record Type (one-to-one correspondence).
In a Reference, multiple parent Record Types can reference the same child Record Type (many-to-one correspondence).
Another example of Composition would be a Contact (a parent) that includes an Address (a child). It does not make sense for an Address to exist on its own, outside of a Contact (well, an Address would have to be a part of a Map Marker or perhaps a GPS Location, but it would have to be a part of something). There is always one Contact and one Address.
Record Type Label | Description | Field Label | Field Type |
---|---|---|---|
Address | a particular urban location | Street | Text |
City | Text | ||
State | Choice (of all valid states) | ||
ZIP | Unsigned Number | ||
Contact | a person with a first name and a last name | First Name | Text |
Last Name | Text | ||
Mailing Address | Address (through Composition) |
Another example of a Reference would be an Order (a parent) that includes a Customer (a child). A Customer can exist on its own even without any Orders at all. Also, multiple Orders can involve the same Customer.
Record Type Label | Description | Field Label | Field Type |
---|---|---|---|
Customer | a buyer | First Name | Text |
Last Name | Text | ||
Company Name | Text | ||
Order | an order for a buyer | Purchase Date | Date |
Order Number | Unsigned Number | ||
Payee | Customer (through a Reference) |
Information | |
---|---|
![]() |
It is not possible for a Record Type to include itself (as a Composed Type) or reference itself (as a Referenced Type), either directly (as an immediate child Record Type) or indirectly (as a grandchild Record Type). A parent Record Type can work only with child or grandchild Record Types that are different from itself. Otherwise, it would copy itself or would keep pointing to itself forever in an infinite loop. |
An Appliance Type is really just a Record Type, but with some built-in special-purpose functionality that involves its Fields, such as mobile hardware integration (e.g., getting the current GPS location) or interdependent mathematical calculations (e.g., quantity, cost and amount). For example:
Record Type Label | Description | Sample |
---|---|---|
Location | a geolocation (GPS) group with latitude and longitude | lat: 40.753597, lon: -73.983233 |
Time Group | a time tracking group with a timer, start time, end time, duration and breaktime | 9:00 AM - 5:00 PM, 8h:00m, -0:45m |
Expense Group | an expense tracking group with quantity, cost and amount | 3 x $0.99 = $2.97 |
Mileage Group | a mileage tracking group with odometer start, odometer end and distance | 45000 - 45075 = 75mi |
A Glyph is the most basic, indivisible building block of easyAsPieDB User Interface (UI). It is concerned with how the information is formatted and presented, rather than what that the information really is in itself. For example:
Glyph Label | Description | Sample |
---|---|---|
Heading | a textual header for a group of Fields | Authentication (a logical grouping of a Username and a Password) |
Line Break | a separator breaking up a long line into multiple ones | Line 1 |
Line 2 |
A Formula is a custom recipe specified by a user that describes how to create a Field using information in other Fields within the same Record. A Formula is a collection of Elements. An Element is able to not only reference another Field, but also specify a mathematical operation, contain a predefined number, etc. Each Element of a Formula is processed one by one in the order that was specified by a user to produce a Value for a Field.
A Formula can be used for a Calculation or a Merge.
A Formula for a Calculation can be assembled from the following Elements:
Description | Sample | |
---|---|---|
Field | a numeric (non-textual) Field within the same Record | Number, Currency, … |
Constant | a predefined numeric (non-textual) Value | 17, $1.99, … |
Special Value | a predefined numeric (non-textual) mathematical Value | pi, epsilon, infinity |
Operator | a mathematical operator | + (addition), - (subtraction), * (multiplication), … |
Symbol | a separator, a grouping marker, … | a comma, parentheses, … |
Mathematical Function | a mathematical function | avg, floor, max, … |
Trigonometric Function | a trigonometric function | sin, cos, deg2rad, … |
The result of a Calculation is always determined as a fractional, numeric (non-textual) Value. However, the Field that is supposed to receive the result of a Calculation can be of any numeric (non-textual) Value Type, for example Number or Currency. The particular choice of a Value Type used for a Field with a Calculation is called a Result Type.
Notice | |
---|---|
![]() |
The particular Result Type chosen for the Field with a Calculation determines the final Value for that Field. For example, the Calculation of “four divided by three” results in the Value of 1.333, but if the Result Type for a Field is Number (non-fractional), the Value of 1.333 has to be converted to the nearest whole (non-fractional) number: 1, discarding the fractional part: 0.333. |
A Formula for a Calculation can specify an Operator. An Operator is a basic mathematical operation. The following Operators are supported:
Operator | Description |
---|---|
+ | addition between x and y (e.g., x + y) |
- | subtraction between x and y (e.g., x - y) |
* | multiplication between x and y (e.g., x * y) |
/ | division between x and y (e.g., x / y) |
% | modulus of x with respect to y (e.g., x % y) |
^ | x to the power of y (e.g., x ^ y) |
A Formula for a Calculation can specify a Function. A Function is a built-in mathematical or trigonometric calculation.
A Function always takes one or more Arguments (inputs) for the calculation it performs. Function Arguments are enclosed in parentheses. Each Argument is separated by a comma.
For example, the mathematical Function abs, “an absolute value of x” can be written as “abs(x)” and takes only one Argument: the quantity to calculate an absolute value for. The mathematical Function roundn, “round x to n decimal places” can be written as “roundn(x,n)” and takes two Arguments: the quantity to round and the desired number of decimal places.
Function | Description | Written as | Arguments | Input | Output |
---|---|---|---|---|---|
abs | an absolute value of x | abs(x) | the quantity to calculate an absolute value for | -3 | 3 |
roundn | round x to n decimal places | roundn(x,n) | the quantity to round and the desired number of decimal places | 1.333 and 2 | 1.330 |
The following mathematical Functions are supported:
Function | Description |
---|---|
abs | absolute value of x (e.g., abs(x)) |
avg | average of all the inputs (e.g., avg(x,y,z,w,u,v) == (x + y + z + w + u + v) / 6) |
ceil | smallest integer that is greater than or equal to x |
clamp | clamp x in range between r0 and r1, where r0 < r1 (e.g., clamp(r0,x,r1)) |
equal | equality test between x and y using normalized epsilon |
erf | error function of x (e.g., erf(x)) |
erfc | complimentary error function of x (e.g., erfc(x)) |
exp | e to the power of x (e.g., exp(x)) |
expm1 | e to the power of x minus 1, where x is very small (e.g., expm1(x)) |
floor | largest integer that is less than or equal to x (e.g., floor(x)) |
frac | fractional portion of x (e.g., frac(x)) |
log | natural logarithm of x (e.g., log(x)) |
log10 | base 10 logarithm of x (e.g., log10(x)) |
log1p | natural logarithm of 1 + x, where x is very small (e.g., log1p(x)) |
log2 | base 2 logarithm of x (e.g., log2(x)) |
logn | base N logarithm of x. where n is a positive integer (e.g., logn(x,8)) |
max | largest value of all the inputs (e.g., max(x,y,z,w,u,v)) |
min | smallest value of all the inputs (e.g., min(x,y,z,w,u)) |
mul | product of all the inputs (e.g., mul(x,y,z,w,u,v,t) == (x * y * z * w * u * v * t)) |
ncdf | normal cumulative distribution function (e.g., ncdf(x)) |
nequal | not-equal test between x and y using normalized epsilon |
pow | x to the power of y (e.g., pow(x,y) == x ^ y) |
root | nth-Root of x. where n is a positive integer (e.g., root(x,3) == x^(1/3)) |
round | round x to the nearest integer (e.g., round(x)) |
roundn | round x to n decimal places (e.g., roundn(x,3)) where n > 0 and is an integer (e.g., roundn(1.2345678,4) == 1.2346) |
sgn | sign of x, -1 where x < 0, +1 where x > 0, else zero (e.g., sgn(x)) |
sqrt | square root of x, where x >= 0 (e.g., sqrt(x)) |
sum | sum of all the inputs (e.g., sum(x,y,z,w,u,v,t) == (x + y + z + w + u + v + t)) |
trunc | integer portion of x (e.g., trunc(x)) |
The following trigonometric Functions are supported:
Function | Description |
---|---|
acos | arc cosine of x expressed in radians. Interval [-1,+1] (e.g., acos(x)) |
acosh | inverse hyperbolic cosine of x expressed in radians (e.g., acosh(x)) |
asin | arc sine of x expressed in radians. Interval [-1,+1] (e.g., asin(x)) |
asinh | inverse hyperbolic sine of x expressed in radians (e.g., asinh(x)) |
atan | arc tangent of x expressed in radians. Interval [-1,+1] (e.g., atan(x)) |
atan2 | arc tangent of (x / y) expressed in radians. [-pi,+pi] (e.g., atan2(x,y) |
atanh | inverse hyperbolic tangent of x expressed in radians (e.g., atanh(x)) |
cos | cosine of x (e.g., cos(x)) |
cosh | hyperbolic cosine of x (e.g., cosh(x)) |
cot | cotangent of x (e.g., cot(x)) |
csc | cosecant of x (e.g., csc(x)) |
sec | secant of x (e.g., sec(x)) |
sin | sine of x (e.g., sin(x)) |
sinc | sine cardinal of x (e.g., sinc(x)) |
sinh | hyperbolic sine of x (e.g., sinh(x)) |
tan | tangent of x (e.g., tan(x)) |
tanh | hyperbolic tangent of x (e.g., tanh(x)) |
hypot | hypotenuse of x and y (e.g., hypot(x,y) = sqrt(xx + yy)) |
iclamp | inverse-clamp x outside of the range r0 and r1. Where r0 < r1. If x is within the range it will snap to the closest bound (e.g., iclamp(r0,x,r1) |
inrange | in-range returns ‘true’ when x is within the range r0 and r1. Where r0 < r1 (e.g., inrange(r0,x,r1) |
deg2rad | convert x from degrees to radians (e.g., deg2rad(x)) |
deg2grad | convert x from degrees to gradians (e.g., deg2grad(x)) |
rad2deg | convert x from radians to degrees (e.g., rad2deg(x)) |
grad2deg | convert x from gradians to degrees (e.g., grad2deg(x)) |
For example, the Formula “take a quantity and multiply it by two” can be written as “Fractional Number * 2” and can be broken down into individual Elements as follows:
Element | Description | |
---|---|---|
Fractional Number | Field | a Field within the same Record |
* | Operator | a mathematical operation (multiplication) |
2.000 | Constant | a number |
The Formula above would be processed in the following manner:
Element | Input | Output |
---|---|---|
Fractional Number | 0.123 | |
* | ||
2.000 | 0.246 |
The input of 0.123 would result in the calculated output of 0.246.
For example, the Formula “round a quantity to just one decimal place and add the number two to the result” can be written as “roundn(Fractional Number, 1.000) + 2.000” and can be broken down into individual Elements as follows:
Element | Description | |
---|---|---|
roundn | Mathematical Function | round a quantity to a number of decimal places |
( | Symbol | a grouping marker |
Fractional Number | Field | a Field within the same Record |
, | Symbol | a separator |
1.000 | Constant | the number of decimal places for rounding |
) | Symbol | a grouping marker |
+ | Operator | a mathematical operation (addition) |
2.000 | Constant | a number |
The Formula above would be processed in the following manner:
Element | Input | Output |
---|---|---|
roundn | ||
( | ||
Fractional Number | 0.333 | |
, | ||
1.000 | ||
) | 0.300 | |
+ | ||
2.000 | 2.300 |
The input of 0.333 would result in the calculated output of 2.300.
Formula |
---|
sqrt(1 - (3 / x^2)) |
clamp(-1, sin(2 * pi * x) + cos(y / 2 * pi), +1) |
sin(2.34e-3 * x) |
inrange(-2,m,+2) |
a * exp(2.2 / 3.3 * t) + c |
x + sin(2.567 * pi / y) |
2.123 * {pi * z} / (x + cos(y / pi)) |
2x + 3y + 4z + 5w |
2 * x + 3 * y + 4 * z + 5 * w |
3(x + y) / 2.9 + 1.234e+12 |
3 * (x + y) / 2.9 + 1.234e+12 |
(x + y)3.3 + 1 / 4.5 |
[x + y] * 3.3 + 1 / 4.5 |
(x + y[i])z + 1.1 / 2.7 |
(x + y[i]) * z + 1.1 / 2.7 |
(sin(x / pi) cos(2y) + 1) |
(sin(x / pi) * cos(2 * y) + 1) |
75x^17 + 25.1x^5 - 35x^4 - 15.2x^3 + 40x^2 - 15.3x + 1 |
A Formula for a Merge can be assembled from the following Elements:
Description | Sample | |
---|---|---|
Field | a textual (non-numeric) Field within the same Record | Text, Email, … |
Text | a predefined textual (non-numeric) Value | “Today”, “@”, … |
Information | |
---|---|
![]() |
Any Field can be used for a Merge Formula by being automatically converted to Text. For example, a Date Field will be converted to “day - month - year” (in the appropriate date format), a Time Field will be converted to “hour : minute” (in the appropriate time format), etc. |
The result of a Merge is always determined as a textual (non-numeric) Value. The Field that is supposed to receive the result of a Merge has to be of the Value Type of Text. The Value Type used for a Field with a Merge is called a Result Type.
For example, the Formula “merge three Fields with custom separators in between” can be broken down into individual Elements as follows:
Element | Description |
---|---|
Text | a Field within the same Record |
@ | a separator |
Date | a Field within the same Record |
, | a separator |
Time | a Field within the same Record |
The Formula above would be processed in the following manner:
Element | Input | Output |
---|---|---|
Text | Record #1 | Record #1 |
@ | Record #1 @ | |
Date | 01/01/2024 | Record #1 @ 01/01/2024 |
, | Record #1 @ 01/01/2024, | |
Time | 9:00 AM | Record #1 @ 01/01/2024, 9:00 AM |
The input of “Record #1”, “01/01/2024” and “9:00 AM” would result in the merged output of “Record #1 @ 01/01/2024, 9:00 AM”.
easyAsPieDB merges concepts well-known from the world of databases, such as Records, Fields and Tables, with concepts well-known from desktop computing, such as Collections. The notion of a Type (as described in the “How easyAsPieDB Defines Information” section) serves as “glue” across all those ideas.
Just like a Record Type, a Record is also the most high-level unit of information, usually something you need to keep track of. It is a collection of Fields.
An important concept to understand is that a Record Type (information definition) is not the same thing as an actual Record (information content). The former represents what information can be stored in general; the latter represents the information that is stored in particular.
For example, if a Record Type (information definition) includes a Field labeled “Date of Birth” that is supposed to be a Date, then it is not possible for a Record (information content) to include, for example, Text for that Field instead:
Description | Field Label | Sample | |
---|---|---|---|
Record Type | information definition | Date of Birth | Date |
Record | information content | Date of Birth | January 1, 1984 |
Record | invalid information content | Date of Birth |
If an explicit distinction has to made between the two, a Type of a Record is called a Record Type and an occurrence of a Record is called a Record instance.
The information content that has been stored in a Field of a Record is also called a Value. A Field can include an appropriate Value, but does not have to; in that case, a Field is said to be “empty” or “undefined”.
A Table is a container. It is a collection of Records, every Record of the same Record Type. For example:
Description | Field Label | Sample | |
---|---|---|---|
Record | information content #1 | First Name | George |
Last Name | Williams | ||
Record | information content #2 | First Name | Kristy |
Last Name | Abercrombie |
It is possible (and often preferred) to create more than one Table for Records of the same Record Type, for example:
Record Type Label | Description | Table Label | |
---|---|---|---|
Table | Contact | personal information collection | Family |
Table | Contact | business information collection | Customers |
A Collection is also a container. It is a collection of Tables or other Collections. It is a cataloging structure analogous to the traditional office filing cabinet. For example:
Record Type Label | Description | Collection Label | Table Label | |
---|---|---|---|---|
Table | Contact | personal information collection #1 | Private | Family |
Table | Contact | personal information collection #2 | Private | Friends |
Table | Contact | business information collection #1 | Business | Customers |
Table | Contact | business information collection #2 | Business | Coworkers |
Information | |
---|---|
![]() |
Both Tables and Collections are called Containers, since both are used to contain and categorize information. |
Information | |
---|---|
![]() |
In desktop PC terminology, Collections correspond to “directories” and Tables correspond to “documents”. Records in a Table can be thought of as “sentences” in a text document. Fields in a Record can be thought of as “words” in a sentence. |
An important concept to understand is that Collections can contain not only Tables, but also nested Collections. Effectively, the Collections-inside-Collections capability allows for an in-depth, tree-like structure of information. For example:
[Home]
├── [Private]
│ ├── [Accounts]
│ │ ├── Banking
│ │ └── Credit Cards
│ │
│ └── [Contacts]
│ ├── Family
│ └── Friends
├── [Business]
│ └── [Contacts]
│ ├── Customers
│ └── Coworkers
Nested Collections, thus Collections-inside-Collections, are also called Subcollections.
Most conventional database or spreadsheet software products do not define Types, but only introduce the notion of a manual table. If you want to work with, for example, Contacts, you have to create a manual table with appropriate columns, such as a “First Name”, a “Last Name” and so on. So far the process is analogous to the way easyAsPieDB works, but easyAsPieDB defines a Record Type with Fields, rather than a manual table with columns. A Record Type is used to create a managed Table with Records for that particular Record Type.
If you wish to maintain a secondary list of Contacts with a conventional database or spreadsheet software product, you have to create another manual table and go through the process of adding all the appropriate columns all over again. Not so with easyAsPieDB: since you already defined an appropriate Record Type for Contacts, all you need to do is create a secondary managed Table with the same Record Type. Everything else happens automatically.
Some conventional database or spreadsheet software products do allow a user to predefine a blueprint for a manual table and automatically create new manual tables from such a blueprint. However, what if you need to augment the layout of the information that’s already there, for example by adding a new “Birthday” column to your Contacts? In a conventional database or spreadsheet software product, you need to edit every one of your manual tables one by one to add that new column everywhere. Not so with easyAsPieDB: since you already defined an appropriate Record Type for Contacts, all you need to do is add a new Field to that single Record Type itself. All your managed Tables for that Record Type, even if there is a hundred of them, will be updated automatically.
A Search is a Record pre-filled by a user that describes a comparison (in other words, a query) against other, existing Records. It is a collection of Fields. Each Field of a Search includes an Operator and a Value. An Operator describes how exactly to perform a comparison. A Value is the content to compare against. For example:
Field Type | Operator | Value | Description | Matches |
---|---|---|---|---|
Date | Today | test whether a Field matches the current date | the current date | |
Time | At | 9:00 AM | test whether a Field is exactly the same as the specified Value | 9:00 AM |
Text | Matching | bar | test whether a Field is exactly the same as the specified Value | bar |
Text | Containing | bar | test whether a Field includes the specified Value as a substring | barn, embargo, toolbar, … |
Number | Greater Than | 100 | test whether a Field is greater than the specified Value | 101, 911, 65535, … |
When searching:
A Template is a Record pre-filled by a user, out of which new Records can be created quickly. When creating a new Record from a Template (as opposed to creating a new, blank Record), not only a new Record gets created, but also all the information already available in a Template is automatically copied into the new Record, before that Record is presented to a user for further modification. For example:
Record Type Label | Template Label | Field Label | Field Type | Sample |
---|---|---|---|---|
Time Tracking | My Typical Workday | Start Time | Time | 9:00 AM |
End Time | Time | 5:00 PM | ||
Break | Duration | 1h:00m |
When creating a new Record for the Time Tracking Record Type, you can either:
or:
There might be situations when a particular Field in a Record is never particularly useful when creating a Template, since that Field is supposed to always contain unique data. For example:
Record Type Label | Field Label | Sample |
---|---|---|
Order | Order Number | 25703 |
When each and every Record of the Order Record Type is supposed to have a unique “Order Number”, it is never useful to have a pre-defined “Order Number” copied in automatically.
The Templatability attribute for a Field in a Record Type indicates whether that particular Field is relevant when creating a Template. When marked as “no” (false), a Field is altogether hidden away when creating a Template.
Please see the “How easyAsPieDB Reports Information” section.
easyAsPieDB presents different Views depending on the nature of information a user is working with at the moment. For example:
Content | View |
---|---|
Tables and Collections | Containers View |
Record Types and Choice Types | Types View |
Records | Records View |
Each View consists of a top navigation bar, an item list (or other visual representation of information) in the middle and an optional toolbar at the bottom.
the very first (root) View
The Containers View is concerned with multiple Containers: Tables and Collections. It presents a list of available Containers. It allows for information categorization (see “How easyAsPieDB Categorizes Information”).
The Containers View supports two distinct modes of operation: the viewing mode and the editing mode. Each mode of operation allows for different actions.
Name | Purpose | Location | ||
---|---|---|---|---|
Back | ![]() |
move back to the last viewed Collection | navigation bar | |
Edit/Done | switch the list of Containers across the viewing mode and the editing mode | navigation bar | ||
New | ![]() |
navigation bar | ||
Type | create a new Record Type | |||
Collection | create a new Collection | |||
Table | create a new Table | |||
Record Types | select | present a subsequent Types View and show available Types of information (filtered for Record Types) | item list | |
Choice Types | select | present a subsequent Types View and show available Types of information (filtered for Choice Types) | item list | |
Collection | select | drill down into a Collection and show Tables and Collections inside it | item list | |
Table | select | present a subsequent Records View and show Records inside the Table | item list | |
Home | ![]() |
move to the topmost (root) Collection | toolbar | |
Find | ![]() |
toolbar | ||
Text | find Containers by Text (i.e., Container names or content inside Containers) | |||
Reset | reset search, show all Containers |
Name | Purpose | |
---|---|---|
Delete | ![]() |
delete a Container: a Collection or a Table |
Collection | select | present a subsequent Collection View and edit Collection attributes (e.g., a Label) |
Table | select | present a subsequent Table View and edit Table attributes (e.g., an icon) |
Name | Purpose | Location | ||
---|---|---|---|---|
Help | ![]() |
toolbar | ||
User’s Guide | display a User’s Guide | |||
Contact Us | send a message to support | |||
Rate in the App Store | rate easyAsPieDB in the App Store | |||
Tools | ![]() |
toolbar | ||
About | present a subsequent About View and show app version | |||
Backup | backup your data to the cloud | |||
Restore | restore your data from the cloud | |||
Synchronize | synchronize data across multiple devices through the cloud | |||
Subscriptions | show license information, purchase extended app functionality | |||
Settings | present a subsequent Settings View and customize app settings |
Containers View (the "New" Collection or "Edit" Collection action) >>
Collection View
The Collection View is concerned with a single Collection. It presents an editable list of Attributes of a Collection. It allows for Container modification.
Name | Description |
---|---|
Label | a Label to describe a Collection (e.g., “Private”, “Business”, etc.) |
Icon | an icon to use for a Collection in the Containers View |
Containers View (the "New" Table or "Edit" Table action) >>
Table View
The Table View is concerned with a single Table. It presents an editable list of Attributes of a Table. It allows for Container modification.
Name | Description |
---|---|
Label | a Label to describe a Table (e.g., “Family”, “Customers”, etc.) |
Record Type | a Record Type for Records stored in a Table - present a subsequent Type picker View and show a list of all available Record Types (e.g., Contact, Customer, Order, etc.) |
Icon | an icon to use for a Table in the Containers View |
Information | |
---|---|
![]() |
When defining a Table, only Record Types can be used for its Type. Other groups of Types (Value Types, Choice Types and Appliance Types) are not available in the Type picker View, since Tables are supposed to store entire Records only. However, Records can further include individual Values, Choices and Appliances inside them. |
Containers View (the "Record Types" or "Choice Types" action) >>
Types View
The Types View is concerned with multiple Types: Record Types and Choice Types. It presents a list of available Types. It allows for information definition (see “How easyAsPieDB Defines Information”).
The Types View supports only one mode of operation: the editing mode. Editing can occur across two groups of Types: Record Types and Choice Types.
Name | Purpose | Location | |
---|---|---|---|
New | ![]() |
create a new Type for the current Type group: a Record Type or a Choice Type | navigation bar |
Record/Choice | switch the list of Types across Type groups: Record Types and Choice Types | segmented control | |
Delete | ![]() |
delete a Type: a Record Type or a Choice Type | item list |
Record Type | select | present a subsequent Record Type View and edit Record Type attributes (e.g., Fields) | item list |
Choice Type | select | present a subsequent Choice Type View and edit Choice Type attributes (e.g., Alternatives) | item list |
Information | |
---|---|
![]() |
To create a new Table for a particular Record Type (as opposed to creating a new Record Type), use the “New >> Table” action in the Containers View and select the desired Record Type for the new Table’s “Record Type” attribute. |
Containers View (the "Record Types" action) >>
Types View (the "Record" group, the "New" or "Edit" action) >>
Record Type View
The Record Type View is concerned with a single Record Type. It presents an editable list of Attributes of a Record Type. It allows for information definition.
Name | Description |
---|---|
Label | a Label to describe a Record Type (e.g., Contact) |
Fields | present a subsequent Record Type Fields View and show the Fields defined for a Record Type |
Display As | the Field to use when displaying a child Record inside a parent Record (e.g., a “Last Name” for a Contact displayed inside a Time Tracking ticket) |
Containers View (the "Record Types" action) >>
Types View (the "Record" group, the "New" or "Edit" action) >>
Record Type View (the "Fields" attribute) >>
Record Type Fields View
The Record Type Fields View is concerned with multiple Fields of a Record Type. It presents an editable list of Fields of a Record Type. It allows for information definition.
Name | Purpose | Location | |
---|---|---|---|
New | ![]() |
present a subsequent Record Type Field View and create a new Field for a Record Type | navigation bar |
Field | select | present a subsequent Record Type Field View and edit Field attributes (e.g., a Label) for a Record Type | item list |
Containers View (the "Record Types" action) >>
Types View (the "Record" group, the "New" or "Edit" action) >>
Record Type View (the "Fields" attribute) >>
Record Type Fields View (the "New" or "Edit" action) >>
Record Type Field View
the “Record Types” topic in the “How easyAsPieDB Defines Information” section
the “Templates” topic in the “How easyAsPieDB Works With Information” section
The Record Type Field View is concerned with a single Field of a Record Type. It presents an editable list of Attributes of a Field. It allows for information definition.
Name | Description |
---|---|
Label | a Label to describe a Field (e.g., a “First Name” in a Contact) |
Type | a Type stored in a Field - present a subsequent Type picker View and show a list of all available Types (Value Types, Choice Types, Record Types, Appliance Types, etc.) |
Templatable | an indicator whether a Field should be available when creating a Template |
Containers View (the "Choice Types" action) >>
Types View (the "Choice" group, the "New" or "Edit" action) >>
Choice Type View
The Choice Type View is concerned with a single Choice Type. It presents an editable list of Alternatives of a Choice Type. It allows for information definition.
Name | Description |
---|---|
Label | a Label to describe a Choice Type (e.g., a Credit Card) |
Alternatives | present a subsequent Choice Type Alternatives View and show the Alternatives defined for a Choice Type (e.g., “VISA”, “Mastercard”, etc.) |
Containers View (select a Table) >>
Records View
The Records View is concerned with multiple Records. It presents a list of Records available in a Table. It allows for information search and review.
Name | Purpose | Location | ||
---|---|---|---|---|
New | ![]() |
create a new, empty Record | navigation bar | |
Record | select | present a subsequent Record View and preview the chosen Record | item list | |
Find | ![]() |
toolbar | ||
Text | find Records by Text | |||
Date Range | find Records by date range | |||
References To… | find Records that reference (point to) a particular Record | |||
Reset | reset search, show all Records | |||
Searches | ![]() |
present a subsequent Searches View and show a list of Searches | toolbar | |
Templates | ![]() |
present a subsequent Templates View and show a list of Templates | toolbar | |
Reports | ![]() |
present a subsequent Reports View and show a list of Reports | toolbar | |
Share | ![]() |
toolbar | ||
Publish (HTML) | render Records in the HTML format and Open (view) or Save | |||
Export (CSV) | convert Records to the CSV format and Open (view) or Save | |||
Import (CSV) | convert data in the CSV format to Records | |||
Options | ![]() |
present a subsequent Options View and customize View display options | toolbar |
Information | |
---|---|
![]() |
To edit or delete an existing Record, either: 1.) use the swipe-from-right-to-left gesture on a particular Record along with the revealed “Edit” or “Delete” actions, or: 2.) select a Record in the Records View list to open it in a subsequent Record View and use the “Edit” or “Delete” actions in the bottom toolbar. |
Containers View (select a Table) >>
Records View (select a Record) >>
Record View
The Record View is concerned with a single Record. It presents a read-only list of Fields available in a Record. It allows for information preview.
Name | Purpose | Location | |
---|---|---|---|
Edit | present a subsequent Fields View and show editable Fields of a Record | navigation bar | |
Duplicate | ![]() |
duplicate a Record | toolbar |
Delete | ![]() |
delete a Record | toolbar |
Move Previous | ![]() |
show the previous Record in the current Table | toolbar |
Move Next | ![]() |
show the next Record in the current Table | toolbar |
Options | ![]() |
present a subsequent Options View and customize View display options | toolbar |
Containers View (select a Table) >>
Records View (select a Record) >>
Record View (the "Edit" action) >>
Fields View
The Fields View is concerned with multiple Fields of a Record to be modified. It presents an editable list of Fields available in a Record. It allows for information preview or modification.
Depending on the Type of a Field, the Fields View allows for immediate, inline information editing (e.g., for Text) or will present a subsequent Field View for information modification (e.g., a calendar for a Date).
Name | Purpose | Location | |
---|---|---|---|
Field | select | present a subsequent Field View and show the relevant Value of a Field | item list |
Containers View (select a Table) >>
Records View (select a Record) >>
Record View (the "Edit" action) >>
Fields View (select a Field) >>
Field View
The Field View is concerned with a single Field of a Record to be modified. It presents an editable View of a Field. It allows for information modification.
Depending on the Type of a Field, the Field View shows information-specific View and offers content-specific actions. For example:
Field Type | View | Sample Action |
---|---|---|
Date | a calendar | set to today’s date |
Image | an image preview | take a photo with a built-in camera |
Reference | a list of Records available to be selected | select a Record to reference |
Name | Purpose | Location | |
---|---|---|---|
Clear | ![]() |
clear the current Value of a Field | toolbar |
Containers View (select a Table) >>
Records View (select the Find >> Advanced, Templates, or Reports action) >>
Resources View
the “Searches” topic in the “How easyAsPieDB Works With Information” section
the “Templates” topic in the “How easyAsPieDB Works With Information” section
the “Reports” topic in the “How easyAsPieDB Works With Information” section
The Resources View is concerned with multiple Resources: Searches, Templates, or Reports. It presents a list of available Resources. It allows for information utilization.
The Resources View supports two distinct modes of operation: the viewing mode and the editing mode. Each mode of operation allows for different actions.
Name | Purpose | Location | ||
---|---|---|---|---|
Close | close the View | navigation bar | ||
Edit/Done | switch the list of Resources across the viewing mode and the editing mode | navigation bar | ||
New | ![]() |
navigation bar | ||
Searches | create a new Search | |||
Templates | create a new Template | |||
Reports | create a new Report | |||
Resource | select | item list | ||
Searches | execute a Search, go back to the previous Records View and show matching Records | item list | ||
Templates | copy a Template into a new Record, present a subsequent Fields View and show editable Fields of the new Record | item list | ||
Reports | generate a Report from all Records in the previous Records View and show it in a subsequent Report View | item list |
Name | Purpose | ||
---|---|---|---|
Delete | ![]() |
delete a Resource: a Search, a Template, or a Report | |
Resource | select | ||
Searches | present a subsequent Search View and edit Search attributes (e.g., a Label) | ||
Templates | present a subsequent Template View and edit Template attributes (e.g., a Label) | ||
Reports | present a subsequent Report View and edit Report attributes (e.g., a Label) |
To generate a Report, choose the “Bar Chart” icon in the Records View toolbar.
A Report presents a tabular View built from information across multiple Records.
A Report is created for all Records currently visible in the Records View. Records View contents can be chosen using broad filters or precise queries (the “Magnifying Glass” icon in the Records View toolbar).
A Report is defined by a set of attributes.
A list of chosen Fields of a Record. Each Field corresponds to a column in a Report. For example:
Sample Records:
Field Label | Sample | |
---|---|---|
Record #1 | First Name | George |
Last Name | Williams | |
Record #2 | First Name | Kristy |
Last Name | Abercrombie |
A sample report:
First Name | Last Name |
---|---|
George | Williams |
Kristy | Abercrombie |
A list of chosen numeric Fields of a Record. Each Field creates a separate Sum Variable. Each Sum Variable is a sum of all Values in one column of a Report. For example:
Sample Records:
Field Label | Sample | |
---|---|---|
Record | Order Number | 1 |
Amount | $1.00 | |
Record | Order Number | 2 |
Amount | $2.00 |
A sample report with a Sum Variable defined for the “Amount” Field:
Order Number | Amount | |
---|---|---|
1 | $1.00 | |
2 | $2.00 | |
Sum Variable | $3.00 |
A Sum Variable created for the “Amount” Field accumulates all “Amount” Values for all Records processed.
A Yes/No choice that shows or hides individual Data Lines (rows) in a Report. Each Data Line corresponds to one Record. For example:
Sample Records:
Field Label | Sample | |
---|---|---|
Record | Order Number | 3 |
Amount | $3.00 | |
Record | Order Number | 4 |
Amount | $4.00 |
A sample report with a Sum Variable defined for the “Amount” Field, with Data Lines:
Order Number | Amount | |
---|---|---|
Data Line | 3 | $3.00 |
Data Line | 4 | $4.00 |
Sum Variable | $7.00 |
A sample report with a Sum Variable defined for the “Amount” Field, but without Data Lines:
Amount | |
---|---|
Sum Variable | $7.00 |
Only the Value of a Sum Variable is visible, while all individual Data Lines are hidden.
A list of chosen Fields of a Record. All Fields together define criteria for a Group, which serves as its unique “signature”. All Records with the same “signature” (thus the same set of matching Fields) are brought together into the same Group. For example:
Sample Records:
Field Label | Sample | |
---|---|---|
Record | Borough | Manhattan |
City | New York | |
Country | USA | |
Record | Borough | Brooklyn |
City | New York | |
Country | USA | |
Record | Borough | Metro |
City | Albany | |
Country | USA |
Sample Groups, defined across the “City” and “Country” Fields:
City | Country | Group Signature | Number of Records |
---|---|---|---|
New York | USA | “New York+USA” | 2 |
Albany | USA | “Albany+USA” | 1 |
Grouping can be nested at multiple Levels, thus creating Groups and Subgroups. Up to five (5) Levels can be defined.
A Yes/No choice that shows or hides Group Footer rows in a Report. Each unique Group Footer corresponds to one Group. For example:
Sample Records:
Field Label | Sample | |
---|---|---|
Record | Borough | Manhattan |
City | New York | |
Country | USA | |
Population | 1,628,706 | |
Record | Borough | Brooklyn |
City | New York | |
Country | USA | |
Population | 2,504,701 | |
Record | Borough | Metro |
City | Albany | |
Country | USA | |
Population | 1,170,483 |
A sample report with a Group defined across the “City” and “Country” Fields, a Sum Variable defined for the “Population” Field, with Group Footers and with Data Lines:
Borough | City | Country | Population | |
---|---|---|---|---|
Manhattan | New York | USA | 1,628,706 | |
Brooklyn | New York | USA | 2,504,701 | |
Group Footer | New York | USA | 4,133,407 | |
Metro | Albany | USA | 1,170,483 | |
Group Footer | Albany | USA | 1,170,483 |
To create a Detail -style Report, choose one or more Fields to create columns. Set Data Lines to “Yes” to create rows from individual Records. (Sum Variables, Groups and Group Footers are optional.)
To create a Summary -style Report, choose one or more Sum Variables to create columns. Set Data Lines to “No” to hide data from individual Records. Specify one or more Groups and set Group Footers to “Yes” to create rows from Groups of Records. (Fields are optional.)
The look and feel of a Report can be customized through its “CSS Style” attribute (HTML Cascading Style Sheets). For a list of available CSS properties, have a look at the output produced by the “Default [CSS]” action in the “CSS Style” Field View toolbar.
The goal of this section is to: 1.) create a new Record Type representing a sample Contact, 2.) create a new Table for the Contact Record Type to hold Records, 3.) create a new Record for the Contact Record Type inside the new Table.
Description | Field Label | Field Type | Sample | |
---|---|---|---|---|
Field | a first name | First Name | Text | George |
Field | a last name | Last Name | Text | Williams |
Field | a date of birth | Date of Birth | Date | January 1, 2024 |
Field | a formatted Social Security number | Social Security | Text | 123-45-6789 |
Before proceeding, make sure to navigate to the Containers View, the very first (root) View within easyAsPieDB.
View | Action | Description | |
---|---|---|---|
1. | Containers View | select the “Record Types” item line in the list | opens the Types View |
2. | Types View | select the “Plus” icon in the navigation bar | creates a new Record Type |
3. | Record Type View | specify the “Label” item, e.g. “Contact” | stores a name for the new Record Type |
4. | Record Type View | select the “Fields” item | opens the Fields View |
5. | Fields View | select the “Plus” icon in the navigation bar | creates a new Field |
6. | “New…” View | select the “Text (Value)” item line in the list | chooses the Text (Value Type) for the new Field |
7. | Field View | specify the “Label” item, e.g. “First Name” | stores a name for the new Field |
8. | Field View | choose the “Save” button in the navigation bar |
View | Action | Description | |
---|---|---|---|
9. | Fields View | choose the left arrow (chevron) icon in the navigation bar | |
10. | Record Type View | select the “Display As” item | opens the Display As View |
11. | Display As View | select the “First Name” item line in the list | closes the View automatically |
12. | Record Type View | choose the “Save” button in the navigation bar | |
13. | Types View | choose the “Close” button in the navigation bar |
A new Record Type has been created. You can now create a new Table to hold Records for the Contact Record Type, as described below.
Before proceeding, make sure to have already created a new Contact Record Type, as described above.
View | Action | Description | |
---|---|---|---|
1. | Containers View | choose the “Plus” icon in the navigation bar | creates a new Container |
2. | “New…” View | select the “Table” item line in the list | creates a new Table (vs. a Collection) |
3. | Record Type View | select the Contact item line in the list | closes the View automatically |
4. | Table View | enter a name for the Table in the “Label” item, e.g. “Friends” | |
5. | Table View | choose the “Save” button in the navigation bar |
A new Table has been created. You can now create a new Record inside the new Table, as described below.
Before proceeding, make sure to have already created a new “Friends” Table, as described above.
View | Action | Description | |
---|---|---|---|
1. | Containers View | select the “Friends” item line in the list | opens the Table |
2. | Records View | choose the “Plus” icon in the navigation bar | creates a new Record |
3. | Fields View | enter a first name in the “First Name” Field, e.g. “George” | |
4. | Fields View | enter a last name in the “Last Name” Field, e.g. “Williams” | |
5. | Fields View | select the “Date of Birth” Field | opens the Field View |
6. | Field View | select a date in a calendar, e.g. “January 1, 2024” | |
7. | Field View | select the left back (chevron) icon in the navigation bar | |
8. | Fields View | enter a Social Security number in the “Social Security” Field, e.g. “123-45-6789” | |
9. | Fields View | choose the “Save” button in the navigation bar |
A new Record has been created. You can now create a new Report, see “How easyAsPieDB Reports Information”.
For technical support, please visit the R&F Consulting, Inc. web site at http://www.rfcons.com.
The information contained in this document represents the current view of R&F Consulting, Inc. on the issues discussed as of the date of publication. Because R&F Consulting, Inc. must respond to changing market conditions, it should not be interpreted to be a commitment on the part of R&F Consulting, Inc., and R&F Consulting, Inc. cannot guarantee the accuracy of any information presented after the date of publication.
This Guide is for informational purposes only. R&F CONSULTING, INC. MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.
Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of R&F Consulting, Inc.
R&F Consulting, Inc. may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from R&F Consulting, Inc., the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.
Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, email address, logo, person, place or event is intended or should be inferred.
© 2012 R&F Consulting, Inc. All rights reserved.
The names of actual companies and products mentioned herein may be the trademarks of their respective owners.