Skip to content

Commit fedced8

Browse files
committedJun 19, 2015
Fix #12254 - Fix lookup of SRID for SQL Server layers
Funded by TechnoglogyOne, Australia - Backported to 2.8.3 - Cherry-picked from 9c73a22
1 parent 7878b3f commit fedced8

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed
 

‎src/providers/mssql/qgsmssqlprovider.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ QgsMssqlProvider::QgsMssqlProvider( QString uri )
132132
mGeometryColName = anUri.geometryColumn();
133133

134134
if ( mSRId < 0 || mWkbType == QGis::WKBUnknown || mGeometryColName.isEmpty() )
135+
{
135136
loadMetadata();
137+
}
136138
loadFields();
137139
UpdateStatistics( mUseEstimatedMetadata );
138140

@@ -1324,7 +1326,11 @@ QgsCoordinateReferenceSystem QgsMssqlProvider::crs()
13241326
{
13251327
if ( !mCrs.isValid() && mSRId > 0 )
13261328
{
1327-
// try to load crs
1329+
mCrs.createFromSrid( mSRId );
1330+
if ( mCrs.isValid() )
1331+
return mCrs;
1332+
1333+
// try to load crs from the database tables as a fallback
13281334
QSqlQuery query = QSqlQuery( mDatabase );
13291335
query.setForwardOnly( true );
13301336
bool execOk = query.exec( QString( "select srtext from spatial_ref_sys where srid = %1" ).arg( QString::number( mSRId ) ) );
@@ -1336,6 +1342,8 @@ QgsCoordinateReferenceSystem QgsMssqlProvider::crs()
13361342
query.finish();
13371343
}
13381344
query.clear();
1345+
1346+
// Look in the system reference table for the data if we can't find it yet
13391347
execOk = query.exec( QString( "select well_known_text from sys.spatial_reference_systems where spatial_reference_id = %1" ).arg( QString::number( mSRId ) ) );
13401348
if ( execOk && query.isActive() && query.next() && mCrs.createFromWkt( query.value( 0 ).toString() ) )
13411349
return mCrs;

‎src/providers/mssql/qgsmssqlsourceselect.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ void QgsMssqlSourceSelect::on_btnConnect_clicked()
527527
{
528528
QString testquery( "SELECT count(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'geometry_columns'" );
529529
q.exec( testquery );
530+
q.first();
530531
int count = q.value( 0 ).toInt();
531532
bool geometryColumnsFound = count != 0;
532533
if ( !geometryColumnsFound )

0 commit comments

Comments
 (0)
Please sign in to comment.