How to 'bind' query to a grid, in Axapta? - axapta

How can i bind a 'complex' query with, for example, 3 joined table to a grid in Axapta ? For 'bind' i intend: show in a grid a list of field in the resulted query ?

If complex then make a query, then drag the query and drop on the Data Sources node.
The joined tables (maybe exclusive exists joined tables) are automatically created for you.
You may then change the nodes.
Any grid should address the first datasource. You drag the grid fields from the created datasources Fields list.
You can do the same without the query using multiple datasources provided proper relations are defined and you use LinkType InnerJoin and JoinSource the first datasource.
See Creating a Form Based on a Composite Query.

Related

Mapping model to a SQL view

I've known how to map a model to a table in SQL in MVC using this:
[Table("table_name")]
I found this answer Take data from different tables and display it in View Index in mvc4
. The answer was to create a new model on joining tables in SQL then bind columns to model's fields.
However, can I make it easier by mapping my models to SQL views? Since views are considered to be (virtual) tables and they already contain what I need.
Yes you can map an entity to a view. EF doesn't know or care whether the object is a table, view, synonym or external table. You just need to map the entity to the view name, and declare the key columns. Views don't really have key columns, so just use whatever combination of columns uniquely identifies a row in the view results.

Does Axapta 4.0 have a functionality to map data between different tables

I have two tables Cashdisc and Convertterm, Does axapta have a functionality where Convertterm.code can be related to CashDisc.Code so that whenever converterm.code changes it can be updated in CashDisc.Code.
Yes. I think you're referring to a table relation.
If you want a table to update another table, you can do that through code, but I think you're talking about how the table naturally functions with table relations.
See here https://msdn.microsoft.com/en-us/library/bb190076(v=ax.10).aspx
You need to write custom code on Convertterm update method after super to update the Cashdisc table.
If you create table relation in child table and if you set validate property to yes, then you can restrict child data creation without a parent record.

filling a grid with from two different record (table) sources

I was wondering if there is any way to populate a table using two different records. My records have the same primary keys, but when I am adding the specific fields to my grid I have this error:
More than one data (key) in one scroll.
I tried to make a Control view field in my primary record, and then refer the new record fields as relative fields but in this case the data is not populating in my grid. Any help or hint will be much appreciated.
I've only done this where the 2nd record is a Derived/Work record.
Can you create a view that combines both records, and put the view in the grid? FYI, peoplesoft let's you update the data in a view, which is not typical in an oracle db system.
Ok guys finally after all discussion, and much try rounds I figured out how to do this.
You need to add a draw a grid beside your old grid and populate it with a new record, which has dynamic view (dynamic sql). The only important case there, is you need to make sure the order of your fields in your records, are in the same order of your fields in the SELECT statement of your sql. Otherwise you will see
an SQL error
.
Try to make a field as display control field which is acting as primary key for its native table and as Foreign key for some other record.. A field needs to be made related if is being fetched from some other record... that is from the record which is not under current consideration. I think this way one can fetch data into grid or scroll respectively from multiple records.

Edit a read-only view

I have a column and I would like to edit some of its rows. The problem is that the table is a view so I cannot edit the rows. How would I proceed to solve this problem?
SQLite doesn't let you update views. But it does allow triggers on views. So you can write an INSTEAD OF UPDATE trigger that makes the appropriate modifications to the underlying table.
As dan04 pointed out, you can use triggers to update views (like in most other databases). For sqlite, see http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger
Example with a view called "myview", containing a table "my_t2"
CREATE TRIGGER myview_update INSTEAD OF UPDATE ON myview
BEGIN
UPDATE my_t2 SET field1 = new.field1, field2 = new.field2 WHERE my_t2.key = old.key;
END
If it's a view, it's not a table. The data for the view is drawn from one or more other tables. Edit the underlying table and when you examine the data in the view it will reflect the changes you made.
A SQL View is a virtual table, which is based on SQL SELECT query. Essentially a view is very close to a real database table (it has columns and rows just like a regular table), except for the fact that the real tables store data, while the views don’t. The view’s data is generated dynamically when the view is referenced. A view references one or more existing database tables or other views. In effect every view is a filter of the table data referenced in it and this filter can restrict both the columns and the rows of the referenced tables.
If you wish to modify the data in your table, you cannot do so with a view. SQL Views are always read-only. If you want to modify your table outside of the View, then use something like an UPDATE or ALTER TABLE statement.

LINQDataSource - Query Multiple Tables?

I have a database and I've created a DBML Linq-to-SQL file to represent this database. I've created a new aspx page and dropped a linqdatasource and a formview control onto it. When I configure the linqdatasource it gives me the choice only to select * from one table...but I want to pull from multiple tables. e.g. I have tables like simple_person, simple_address, simple_phone, and I want to pull from all of them. How can I accomplish this?
Use a custom query
http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx
See: Using the <asp:LinqDataSource> Selecting Event

Resources