Tag: cws_dev300_dba31b User: oj Date: 2008-08-15 09:18:22+0000 Modified: dba/dbaccess/source/ui/tabledesign/TableController.cxx
Log: #i51517# if a column is auto increment and no pk, use this one File Changes: Directory: /dba/dbaccess/source/ui/tabledesign/ =============================================== File [changed]: TableController.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/tabledesign/TableController.cxx?r1=1.122.24.1&r2=1.122.24.2 Delta lines: +41 -23 --------------------- --- TableController.cxx 2008-08-13 07:17:49+0000 1.122.24.1 +++ TableController.cxx 2008-08-15 09:18:19+0000 1.122.24.2 @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: TableController.cxx,v $ - * $Revision: 1.122.24.1 $ + * $Revision: 1.122.24.2 $ * * This file is part of OpenOffice.org. * @@ -1085,19 +1085,23 @@ { sal_Bool bOk = sal_True; sal_Bool bFoundPKey = sal_False; + ::std::vector< ::boost::shared_ptr<OTableRow> > aAutoIncrementColumns; Reference< XDatabaseMetaData> xMetaData = getMetaData( ); ::comphelper::UStringMixEqual bCase(xMetaData.is() ? xMetaData->supportsMixedCaseQuotedIdentifiers() : sal_True); ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter = m_vRowList.begin(); - for(;aIter != m_vRowList.end();++aIter) + ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aEnd = m_vRowList.end(); + for(;aIter != aEnd;++aIter) { OFieldDescription* pFieldDesc = (*aIter)->GetActFieldDescr(); if (pFieldDesc && pFieldDesc->GetName().getLength()) { bFoundPKey |= (*aIter)->IsPrimaryKey(); + if ( pFieldDesc->IsAutoIncrement() ) + aAutoIncrementColumns.push_back(*aIter); // first check for duplicate names ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter2 = aIter+1; - for(;aIter2 != m_vRowList.end();++aIter2) + for(;aIter2 != aEnd;++aIter2) { OFieldDescription* pCompareDesc = (*aIter2)->GetActFieldDescr(); if (pCompareDesc && bCase(pCompareDesc->GetName(),pFieldDesc->GetName())) @@ -1124,6 +1128,21 @@ if (nReturn == RET_YES) { + if ( !aAutoIncrementColumns.empty() ) + { + aIter = aAutoIncrementColumns.begin(); + aEnd = aAutoIncrementColumns.end(); + for(;aIter != aEnd;++aIter) + { + OFieldDescription* pActFieldDescr = (*aIter)->GetActFieldDescr(); + pActFieldDescr->SetIsNullable(ColumnValue::NO_NULLS); + pActFieldDescr->SetPrimaryKey( sal_True ); + } // for(;aIter != aEnd;++aIter) + static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->InvalidateHandleColumn(); + static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->Invalidate(); + } + else + { ::boost::shared_ptr<OTableRow> pNewRow(new OTableRow()); TOTypeInfoSP pTypeInfo = ::dbaui::queryPrimaryKeyType(m_aTypeInfo); @@ -1135,14 +1154,13 @@ pActFieldDescr->SetAutoIncrement(sal_False); // #95927# pTypeInfo->bAutoIncrement pActFieldDescr->SetIsNullable(ColumnValue::NO_NULLS); - pActFieldDescr->SetName( createUniqueName(::rtl::OUString::createFromAscii("ID") )); pActFieldDescr->SetPrimaryKey( sal_True ); m_vRowList.insert(m_vRowList.begin(),pNewRow); static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->Invalidate(); - // static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->DisplayData(0); static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->RowInserted(0); + } // if ( pTypeInfo.get() ) } } else if (nReturn == RET_CANCEL) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
