How to return multiple datasets with datasnap using FireDac? [Edit]

Hi again,
i am working on a client/server software using DelphiXE4 and FireDac, i have a MySQL Database on a remote server, and i have a Datasnap Server (that uses a TCP Transporter) that communicate and exchange data between the Database and clients. I would like that the server returns multiple datasets to clients in only one request.

I saw this samples on internet: 

*Server:*
{code}
function TServerMethods1.GetData(SQL: string): OleVariant;
var cds: TClientDataSet;
begin
  cds := TClientDataSet.Create(nil);
  try

    { setup 'cds' to connect to database }
    { pull data }

    Result := cds.Data;
  finally
    FreeAndNil(cds);
  end;
end;

function TServerMethods1.GetMultipleDataSets: OleVariant;
begin
  Result := VarArrayCreate([0, 4], varVariant);
  Result[0] := GetData('select * from Table1');
  Result[1] := GetData('select * from Table2');
  Result[2] := GetData('select * from Table3');
  Result[3] := GetData('select * from Table4');
  Result[4] := GetData('select * from Table5');
end;
{code}

*Client:*
{code}
procedure X;
var DataArray: OleVariant;
begin
  try
    with ProxyMethods.TServerMethods1.Create(SQLConnection1.DBXConnection, True) do
    try
      DataArray := GetMultipleDataSets;
    finally
      Free;
    end;

    ClientDataSet1.Data := DataArray[0];
    ClientDataSet2.Data := DataArray[1];
    ClientDataSet3.Data := DataArray[2];
    ClientDataSet4.Data := DataArray[3];
    ClientDataSet5.Data := DataArray[4];
  finally
    VarClear(DataArray);
  end;
end;
{code}

But in this samples they use ClientDataset, i would like to do a similar thing using FireDac and TAdMemTable. The Server send multiple datasets to the client, then i would like to put this datasets inside a TAdMemTable. I don't need a live connection to Database, a temporary table is perfect for me. I am working on this working sequence: Connect -> Request -> Send data-> Disconnect. As fast as possible.

Is it possible to do that? And how?

Thank you in advance for your answers.
0
Davide
8/27/2013 12:28:46 PM
embarcadero.delphi.firedac 822 articles. 2 followers. Follow

6 Replies
5476 Views

Similar Articles

[PageSpeed] 17

Hello Davide

You can do that with FireDAC DataSnap driver:
http://docs.embarcadero.com/products/rad_studio/firedac/Connect_to_DataSnap_server.html

Then you should do:
1) Create a server method in a DataSnap server application.
2) Define several "out ADS: TDataSet" parameters.
3) On the client side you should setup DataSnap connection
using TADConnection + TADPhysDataSnapDriverLink.
4) Add TADStoredProc and set it StoredProcName to the
server method name.
5) Then on client side you can do:

ADStoredProc1.Open;
// process first dataset parameter
ADStoredProc1.NextRecordSet;
// process second dataset parameter
.....

-- 
With best regards,
Dmitry Arefiev / FireDAC Architect
FireDAC - Firebird, SQLite, MySQL, SQL Server, Oracle, PostgreSQL,
DB2, SQL Anywhere, Access, Informix, ODBC high-speed data access lib
0
Dmitry
8/27/2013 2:01:32 PM
Hi Dmitry,

Can you give a more detailed example for the client side?

On server side:
function GetDataset2(out aDataset1, aDataset2: TDataset): Boolean;

but I don't know how to set the parameter in TFDStoredProc for aDataset before
the Execute.

thanks!
Al
0
Allen
9/26/2013 5:32:49 PM
Hello Alen

> but I don't know how to set the parameter in TFDStoredProc for aDataset 
> before
> the Execute.

No need for that. You should use the code:

// adjust StoredProcName value
FDStoredProc1.StoredProcName := 'TServerMethods1.GetDataset2';
FDStoredProc1.Prepare;

FDStoredProc1.Open;
while not FDStoredProc1.Eof do begin
  // process here aDataSet1 using FDStoredProc1
end;

FDStoredProc1.NextRecordset;
while not FDStoredProc1.Eof do begin
  // process here aDataSet2 using FDStoredProc1
end;

-- 
With best regards,
Dmitry Arefiev / FireDAC Architect
FireDAC - Firebird, SQLite, MySQL, SQL Server, Oracle, PostgreSQL,
DB2, SQL Anywhere, Access, Informix, ODBC high-speed data access lib
0
Dmitry
9/26/2013 6:12:28 PM
hi Dimitry,

Thanks for the prompt reply.  Really appreciate it.

Just to clarify: on server side, I'll have to use
TFDConnection - TFDQuery -> DSP -> ClientDataset1
TFDConnection - TFDQuery -> DSP -> ClientDataset2

and pass ClientDataset1, ClientDataset2 back to Client, right?
(so technically it's clientdataset, and not TDataset, right?)

In future, will there be a direct way to pass TFDQuery from server to client directly?

On Client side, it seems that I need to do another copy of the first dataset to
a ClientDataset before the data from 1st dataset disappears after I call NextRecordset?
Won't this be quite time-consuming?

Is there another way to just utilise the ClientDataset1 and ClientDataset2 passed from
server *directly* without re-copying to another 2 memory datasets on Client?

Will appreciate this clarification, because I really want to start using FireDac instead
of the older DB Express.

Thanks!
Allen
0
Allen
9/27/2013 6:02:39 PM
Hi Dimitry,

Any updates?

I'm kinda stuck here, so would appreciate any help.

thanks,
Allen
0
Allen
9/30/2013 3:41:01 PM
> {quote:title=Allen T. wrote:}{quote}
> Hi Dimitry,
> 
> Any updates?
> 
> I'm kinda stuck here, so would appreciate any help.
> 
> thanks,
> Allen

Hello Allen,

What Dimitry wrote works perfectly. You don't need CDS on server side. Your server method for example could be something like this:

function TServerMethods1.GetDataSets(qry1, qry2: string; out ds1, ds2: TDataSet);
begin
    if FDQuery1.Active then
      FDQuery1.Close;
    FDQuery1.SQL.Clear;
    FDQuery1.SQL.Add(qry1);
    FDQuery1.Open;
    ds1 := fdQuery1;

    if FDQuery2.Active then
      FDQuery2.Close;
    FDQuery2.SQL.Clear;
    FDQuery2.SQL.Add(qry2);
    FDQuery2.Open;
    Ds2 := fdQuery2;
End;

You already have code for a client side written in previous posts.
0
Almir
10/3/2013 10:45:09 AM
Reply:

Similar Artilces:

How do I set up a datasnap nested dataset using FireDAC
Delphi XE5, converting application from Delphi XE. In dbEXpress to return nested datasets would use a TSQLDataset for master dataset, link a Datasource to the master dataset, create a second dataset for the nested dataset and link to the Datasource for the master dataset. I do not see a datasource property for the TFDQuery component. How do you link a detail dataset that is to be nested with the master TFDQuery? Thanks, Wayne Hello Wayne > I do not see a datasource property for the TFDQuery component. FireDAC datasets have MasterSource property. http://docwiki.embarcadero.com...

Updating multiple joined tables using FireDac [Edit]
What is the best way to update multiple joined tables using FireDac? Is there any example project or code for me to see? I am using Delphi XE5 Pro and am connecting to a SQL Server Express database using ODBC. I have two tables in a 1 to 1 relationship: Person and Student. Here is a simplified version of the SQL SELECT code: {code} SELECT p.PersonID, p.FirstName, p.LastName, p.Suffix, s.SchoolID, s.YearEnrolled FROM Person p INNER JOIN Student s ON p.PersonID = s.StudentID; {code} FireDac is unable to generate the necessary SQL to update changes. I get an error that says...

Datasets are read-only, when using FireDAC over TDBX and RDBMS=FIREFIRD [Edit]
Hi, with a simple TFDConnection (DriverID Firebird) and TFDTable, TDatasource and Edit-Components like TDBGrid/TDBField I can change all table values and post updates back to the database. But I want to use a TDBX connection for tunneling all database traffic through a datasnap connection. I've changed the DriverID to TDBX and added the following connection parameters to the connection: DriverName=DataSnap Port=2110 DriverID=TDBX ServerConnection=TServerMethods.getConnection ExtendedMetadata=True RDBMS=FIREBIRD With the RDBMS=FIREBIRD parameter, the table query is very fast...

FireDAC and Delphi Pro XE4... firedac tab not visible?
I am moving from a very old Borland product (2006) to Delphi XE4 Professional with FireDAC addon. I purchased both from Embarcadero, and have downloaded both. The documentation says the FireDAC components should automagically appear in the tabset for Delphi. They do not. I don't want to fool around too much as my environment is strictly controlled by IT, and they are very slow to do anything. Is there something that I should have done, but did not do? I installed XE4 first, registered it, then used the link in my email from Embarcadero to download the FireDAC components. Then I ra...

Can FireDac be used with DataSnap?
Most references to DataSnap use dbExpress. Can FireDac be used in its place, XE6? Keith <Keith Marbach> wrote in message news:671072@forums.embarcadero.com... > Most references to DataSnap use dbExpress. Can FireDac be used in its > place, XE6? > Yes Keith Marbach wrote: > Most references to DataSnap use dbExpress. Can FireDac be used in its place, XE6? > > Keith Any TDataset descendant that implements IProviderSupport2 can work with DataSnap. All components that ship with RAD Studio (DBX, FireDAC, IBX, ADO, BDE) implement it. -- Jeff Over...

FireDAC as Datasnap Client [Edit]
Hi All, Is it possible to use FireDAC components (FDConnection -> TFDQuery) as DataSnap Client (with out TClientDatatset) ?. I need this option to migrate from IBX to DataSnap make easy. TFDConnection can connect to DataSnap Server, but cannot connect TFDQuery, get exception "[FireDAC][Phys][TDBX][Datasnap] Remote error: Dbx.SQL is unrecognized command type". I guess I missed something. Any advice welcome. Thank you J Edited by: Jayanto Chua on Nov 24, 2013 6:00 PM Hello Jayanto FireDAC DataSnap supports TFDStoredProc. You can use it to call DataSnap serve...

FireDAC with DataSnap, use Indy?
AS all know, the big problem of DataSnap is the ridiculous Indy framework.. FireDAC when using DataSnap connector, use Indy? > FireDAC when using DataSnap connector, use Indy? FireDAC DataSnap driver just uses DataSnap client components. If DataSnap uses Indy, then FireDAC uses Indy too. -- With best regards, Dmitry Arefiev / FireDAC Architect FireDAC - Firebird, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL Anywhere, Access, Informix, ODBC high-speed data access lib There`s any plan to use other component instead Indy? > {quote:title=Dmitry Arefiev wrote:}...

[Bug and Request] Using FireDAC with Intraweb [Edit]
Hi i already posted this in da-Soft site: http://www.da-soft.com/forums/anydac-general-english/bug-and-request-using-firedac-with-intraweb.html But seems here is the correct place to do it. [BUG] When using FireDAC + Intraweb, it works perfectly, the only issue is when (closing) shutting down the server, it causes an error: --------------------------- Debugger Exception Notification --------------------------- Project IWFireDACTest_DXE_IW14.exe raised exception class EOSError with message 'System Error. Code: 1400. Invalid window handle'. --------------------------- Bre...

Problem in use Aurelius and Firedac and Firebird [Edit]
I'm going to use Aurelius ORM The problem is that the characters are not stored properly in the database. Characters are displayed as question marks "؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟" character set in FireDac=UTF8 character set in Firebird=UTF8 Code : unit EntityUnit; interface uses Aurelius.Mapping.Attributes; type [Entity] [Automapping] TPerson = class private FId: integer; FLastName: string; FFirstName: string; FEmail: string; public property Id: integer read FId; property LastName: string read FLastName write FLastName; property FirstName: string read FFirstName write FFirstName; property Email: string read FEmail write FEmail; end; implementation end. Using Code: MyConnection := TFireDacConnectionAdapter.Create(FDConnection1, false); DBManager := TDatabaseManager.Create(MyConnection); DBManager.DestroyDatabase; DBManager.BuildDatabase; person := TPerson.Create; person.LastName := 'به نام آفریدگار مهربان'; person.FirstName := 'به نام آفریدگار مهربان'; person.Email := 'lennon@beatles.com'; Manager := TObjectManager.Create(MyConnection); try Manager.Save(person); PersonId := person.Id; finally Manager.Free; end; ================================ Connection definition parameters ================================ Database=D:\Documents\Embarcadero\Studio\Projects\TestORM\Win32\Debug\Data\TESTORM.FDB User...

FireDAC replacement for DataSnap based TDataSet access [Edit]
Hello, I hope you can help us choosing the right strategy for integrating FireDAC. At the moment we have a client/server application in which we already replaced the data access to FireDAC. This is working really good and was easy to integrate. So we have: server: TDataSetProvider --> TADQuery --> TADConnection --> DB client: TClientDataSet --> TDSProviderConnection --> TSQLConnection Now I'd like to bring FireDAC to the client as well as we experienced a few problems with TClientDataSet. As the other parts of our business logic rely on DataSnap the easiest solut...

Strange behavior using FireDac with MySQL in thread [Edit]
I have application where i use this piece of code: {code} function TFrameInstance.GetSourcePrimaryKeyField(Table : string) : string; var I : SmallInt; begin FDQuerySource.Open('DESCRIBE ' + Table); for I := 0 to FDQuerySource.RecordCount - 1 do begin if FDQuerySource.FieldByName('Key').AsString = 'PRI' then begin Result:=FDQuerySource.FieldByName('Field').AsString; Break; end; FDQuerySource.Next; end; end; {code} But when i use the same command (DESCRIBE <table>) in thread {code} procedure Tthread.GetFieldNames(Query : TFDQuery ; Table : string); var I : Integer; begin Query.Open('DESCRIBE ' + Table); for I := 0 to QuerySlave.RecordCount - 1 do begin SetLength(FiedNames, Length(FiedNames) + 1); FiedNames[I]:= Query.FieldByName('Field').AsString; Query.Next; end; Query.Close; end; {code} I get error in MySQL syntax near: 'DESCRIBE table )A' at line 2'. But it's allmost identical. First application is VCL and have visual component on it. The other is created dynamicaly in thread, but all SELECT commands work, it only fails when i put DESCRIBE in query. I use Delphi XE5 with FireDAC. *bold* First chance exception at $7580812F. Exception class EMySQLNativeException with message '[FireDAC][Phys][MySQL] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi...

Creating Database Files using Firedac (Delphi XE7)
I have been able to get Firedac to display and edit the following file types in a simple app using FDConnection, FDTable, FDPhysSQLiteDriverLink (and others according to file type) : sdb, gdb, mdb and xls (with ODBC link and drivers). I have been able to create a SQLLite File (.sdb) from scratch and add tables using roughly: FDTable1.Connection = FDConnection1; (set in form) FDConnection1.Params.Clear; FDConnection1.Params.Add('DriverID=SQLite'); FDConnection1.Params.Add('Database='+DATABASE_FILE); FDConnection1.ResourceOptions.DefaultParamType := ptOutput; ...

Tutorial showing datasnap with firedac on iOS using tcp/ip
Hello, I'm looking for an example of a delphi application that is receiving a FDMemtable from a tcp/ip based datasnap server. The only example i've seen is using TDSRestConnection and TFDJSONDataSets over HTTP. How do i simply return an FDMemtable to a client using a datasnap server based on sockets? Thanks > I'm looking for an example of a delphi application that is receiving a > FDMemtable from a tcp/ip based datasnap server. The only example i've > seen is using TDSRestConnection and TFDJSONDataSets over HTTP. How do i > simply return an ...

How to copy a firedac dataset from FDMemTable to FDTable (SQLite connected) [Edit]
I have TDBGrids connected to FDTable1 via a Datasource component. FDTable1 is not using CachedUpdates. When I ran the code, looking at the TDBGrid, the data is copied. But when I open the SQLite database containing FDTable1, the table how is empty! // Copy query results to a FDMemTable. It works OK! FDQuery1.SQL.Text:= 'select userno, loginid from user'; FDQuery1.Open; FDQuery1.FetchAll; FDMemTable1.Active:= False; FDMemTable1.Data:= FDQuery1.Data; FDMemTable1.Active:= True; // Copy from FDMemTable to FDTable. FDConnection1.Offline; FDTable1.Active:= False; FDTable1.Data:= FDMemTable1.Data; FDConnection1.Online; FDTable1.Active:= True; Any idea what could be wrong? Edited by: Simon Lee on Feb 5, 2015 10:36 PM ...

Executing DataSnap server methods using FireDAC
Hi, I am using FireDAC to connect my client application to a DataSnap Server and I am using TFDStoredProc to execute server methods. This works fine. I am having a problem because one of the server methods has a TStream parameter, Does anyone know if it is possible to pass this type of parameter to the server side using TFDStoredProc? Thanks in advance. > I am having a problem because one of the server methods has a TStream parameter, Does anyone know if it is possible to pass this type of parameter to the server side using TFDStoredProc? TFDStoredProc does not support TStream a...

FireDAC mobile app error as sqlite as delphi XE7 [Edit]
i im trying of connect my app as FireDAC but i have some errors. I follor all steps of Mobile_Tutotils_en_pdf file for delphi XE7. First i add one FireDAConnection compoent, after i in FireDAConnection Edito i set DriverID as Sqlite, in Database parameter i set this existing sqlite database "shoplist.s3db i create this database and table as other tool, and i can to add this to DBExpres in data exploer and i can to use it in one mobile delphi project", and i set lockingmode to normal as this manual tell. After as tell in page 269 of this manual when i click over test button, i ...

Insert, Update, Delete very slow with FireDAC DataSnap server [Edit]
Hello, I create two DataSnap server named (1)FireDAC_svr, and (2)DBX_svr, and one DataSnap client named DBX_client. And we have: FireDAC_svr: TADConnection -> TADQuery -> TDataSetProvider DBX_svr: TSQLConnection -> TSQLDataSet -> TDataSetProvider DBX_client: TSQLConnection -> TDSProviderConnection -> TClientDataSet FireDAC_svr and DBX_svr set to the same DataBase environment. DBX_Client can connect to FireDAC_svr and DBX_svr, too. First, DBX_Client connect to FireDAC_svr, and do select, insert, update and delete for 1000 records in each step. The time cost as follow: FireDAC: Select : 0.534 seconds FireDAC: Insert: 6.728 seconds FireDAC: Update: 11.256 seconds FireDAC: Delete: 7.017 seconds And then DBX_Client connect to DBX_svr, and do select, insert, update and delete for 1000 records in each step. The time cost as follow: DBX: Select: 7.643 seconds DBX: Insert: 0.541 seconds DBX: Update: 0.605 seconds DBX: Delete: 0.644 seconds The problem is FireDAC performance is so low than DBX in this test except “Select” . I am not sure is there any problem in my FireDAC server. Is there any solution to tuning FireDAC performance in DataSnap? My development environment: Win 7 Pro x64 SQL 2012 Standare update 1 (in HP DL380 server) Delphi XE4 Enterprise update 1 FireDAC 8.0.5 Thanks for your help. John Edited by: John Tsai on Jun 20, 2013 7:37 AM Edited by: John Tsai on Jun 20, 2013 7:39 AM Edited ...

FireDAC and Datasnap
Hi XE5 MSSql Windows 7 (Dev machine) Windows 2008 server (server machine) I am experimenting with a Multi tier database server and client applications. If I run the datasnap server app locally(connecting to local DB) I can connect from my client app. When I deploy the server app to the server online and try and connect I get the following error Remote error[FireDac][Phys][ODBC][Misrosoft][ODBC Driver Manager] Data source name not found and no default driver specified" Can someone assist me. Do I have to setup a ODBC driver on the server? Thanks > Can someon...

FireDAC installation
My company's currently using Delphi 2010 (Professional), and we're very tempted by the current upgrade offer to take us to Delphi XE5. While our internal release cycles mean we're likely to put off the actual upgrade to XE5, we could make use of the FireDAC system in the near future and as far as I can tell from the feature matrix this +is+ bundled with XE5 Pro. So, as the offer means the upgrade to XE5 is only slightly more expensive than the FireDAC package in isolation, does anyone know if it's possible to install/use the FireDAC bundled with XE5 on our 2010 installati...

Delphi XE2
I'm very excited about the Delphi XE2 update. We have a client server application using Midware from Fpiette. It has served us well for almost 10 years. That being said, Datasnap has been promising looking with Delphi 10 and XE, but with the XE2, I was really excited about the addition of HTTPS protocol being added to the server. The RSA/PC1 works good, but because some of our clients have strict firewall policies, https would solve alot of our headaches, making the application accessible without havi ng to deal with IIS. My problem: I created a test server and defined TCP, HTTP...

FireDAC mobile app error as sqlite as delphi XE7 [Edit] #2
i im trying of connect my app as FireDAC but i have some errors. I follow all steps of Mobile_Tutotils_en_pdf file for delphi XE7. First i add one FireDAConnection compoent, after i in FireDAConnection Edit i set DriverID as Sqlite, in Database parameter i set this existing sqlite database "shoplist.s3db , and i set lockingmode to normal as this manual tell. I After i follow steps 1,2,3,4 and in the step 5 of the page 265 when i try of to set Connected property to true, i get this error: 1. [FireDac][Comp][Clnt]-340. Driver ID is not defined. Set TFDConnection.DriverName or Add D...

How to copy a firedac dataset from FDMemTable to FDTable (SQLite connected) [Edit] #2
I have TDBGrids connected to FDTable1 via a Datasource component. FDTable1 is not using CachedUpdates. When I ran the code, looking at the TDBGrid, the data is copied. But when I open the SQLite database containing FDTable1, the table however is empty! // Copy query results to a FDMemTable. It works OK! FDQuery1.SQL.Text:= 'select userno, loginid from user'; FDQuery1.Open; FDQuery1.FetchAll; FDMemTable1.Active:= False; FDMemTable1.Data:= FDQuery1.Data; FDMemTable1.Active:= True; // Copy from FDMemTable to FDTable. FDConnection1.Offline; FDTable1.Activ...

D2009/DataSnap: Using Return Datasets directly
I have a server method function TCatalogData.Search(SearchString: string; Limit: integer = 100): TDataSet; Which gives me a client method (surprisingly enough): function TCatalogDataClient.Search(SearchString: string; Limit: Integer): TDataSet; Whilst I can define a servermethod -> provider -> clientdataset to use this, I can find no way of using the returned dataset itself. The returned dataset has no connection property, which means the clientdataset goes haywire (read error in SQLExpr) when trying to access it's connection property. I'd like to do: ...

FireDac
Hello, I am using Delphi XE4 and facing a problem with FireDac (8.0.5) and MySQL. I'm trying to get the last 100 records from a large table (20 million rows). When I run the following SQL: {code}select * from largetable order by FId limit 100{code} in MySQL Workbench it returns in 0.2 seconds. When I run the above SQL in Delphi through an ADQuery it never returns (Delphi freezes). Any Ideas ? Thank you ...

Web resources about - How to return multiple datasets with datasnap using FireDac? [Edit] - embarcadero.delphi.firedac

Code division multiple access - Wikipedia, the free encyclopedia
Code division multiple access ( CDMA ) is a channel access method used by various radio communication technologies. It should not be confused ...

Multiple Syria bomb blasts leave 119 people dead, Islamic State claims attacks
At least 119 people are killed in a series of bomb attacks in Syria.

Fitbit Inc (NYSE:FIT) Slapped with Multiple Downgrades After Guidance Trails - BidnessEtc - Semiconductors ...
Piper Jaffray analyst Erin Murphy described Fitbit Inc's (NYSE:FIT) 1Q guidance as "surprising".

Multiple injuries as storms slam Gulf Coast states
CNN Multiple injuries as storms slam Gulf Coast states CNN (CNN) Rough weather was rumbling across the Gulf Coast states on Tuesday evening, ...

Highlights: Sharks bring stick artistry on multiple goals
... Home Giants A's Sharks Warriors Kings 49ers Raiders Quakes Insiders More Tickets Shop Watch Highlights: Sharks bring stick artistry on multiple ...

Security Deals Generating High InterestAnd Multiples
... security firms remains a bright spot. In 2015, there were 132 deals in the security sector at an average enterprise value-to-revenue multiple ...

WORKPLACE NIGHTMARE Up to 7 killed, 30 injured in multiple Kan. shootings
WORKPLACE NIGHTMARE Up to 7 killed, 30 injured in multiple Kan.

Latest: Sheriff: Multiple Deaths, Injuries in Kansas Attacks
Harvey County Sheriff T. Walton says it's possible "as many" as three to four people are dead, including a suspect, and up to 20 people may be ...

Jaylon Smith's knee injury concerns multiple NFL teams
... have arisen regarding possible nerve damage, sources told ESPN. INDIANAPOLIS After medical exams at the NFL's scouting combine on Friday, multiple ...

Denver Broncos Rumors: Brock Osweiler, Malik Jackson, Danny Trevathan Have Multiple Suitors
... Ryan Fitzpatrick available this off-season. Brock Osweiler may be the highest-rated quarterback yet to sign during free agency, but multiple ...

Resources last updated: 3/4/2016 11:49:02 AM