bug fix 2010/02/01
authorU-QUAN-W4\Administrator <Administrator@QUAN-W4.(none)>
Mon, 1 Feb 2010 13:46:40 +0000 (21:46 +0800)
committerU-QUAN-W4\Administrator <Administrator@QUAN-W4.(none)>
Mon, 1 Feb 2010 13:46:40 +0000 (21:46 +0800)
pgadmin/frm/frmImport.cpp
pgadmin/include/frm/frmImport.h
pgadmin/include/utils/pgcsvfile.h
pgadmin/utils/pgcsvfile.cpp

index d27f17ca5eec6f57d2dada7cf1f94135eeda5ac9..7bcda5660863ac4e8f5041b342b525db55ed087b 100755 (executable)
@@ -1252,11 +1252,12 @@ void frmImport::OnColSettingFormatStyle(wxCommandEvent &ev)
 \r
 void frmImport::OnColSettingCellChange(wxGridEvent &ev)\r
 {\r
-    int evrownr = ev.GetRow();\r
-\r
     if (m_colsettingerrnum==-1)\r
         return;\r
 \r
+    int evrownr = ev.GetRow();\r
+\r
+    ResetColSettingOnEmptyColEditor(evrownr);\r
     ParseColsImpSetting(evrownr);\r
 }\r
 \r
@@ -1603,43 +1604,43 @@ void frmImport::ImportData()
                 return;\r
             }\r
             m_impconn->SetNonblocking();\r
+        }\r
 \r
-            if (m_impconn->ExecuteVoid(wxT("BEGIN TRANSACTION;"), false))\r
+        if (m_impconn && m_impconn->ExecuteVoid(wxT("BEGIN TRANSACTION;"), false))\r
+        {\r
+            if (logstmt)\r
             {\r
-                if (logstmt)\r
+                if (logtoscr)\r
                 {\r
-                    if (logtoscr)\r
-                    {\r
-                        txtLogMessages->AppendText(wxT("BEGIN TRANSACTION;"));\r
-                        txtLogMessages->AppendText(END_OF_LINE);\r
-                    }\r
-                    if (m_logfile)\r
-                    {\r
-                        m_logfile->Write(wxT("BEGIN TRANSACTION;"));\r
-                        m_logfile->Write(END_OF_LINE);\r
-                    }\r
+                    txtLogMessages->AppendText(wxT("BEGIN TRANSACTION;"));\r
+                    txtLogMessages->AppendText(END_OF_LINE);\r
                 }\r
-\r
-                txtLogMessages->AppendText(_("Transaction begin."));\r
-                txtLogMessages->AppendText(END_OF_LINE);\r
-                if (loginfo && m_logfile)\r
+                if (m_logfile)\r
                 {\r
-                    m_logfile->Write(_("Transaction begin."));\r
+                    m_logfile->Write(wxT("BEGIN TRANSACTION;"));\r
                     m_logfile->Write(END_OF_LINE);\r
                 }\r
             }\r
-            else\r
-            {\r
-                if (logerror)\r
-                {\r
-                    if (logtoscr)\r
-                        txtLogMessages->AppendText(m_impconn->GetLastError());\r
-                    if (m_logfile)\r
-                        m_logfile->Write(m_impconn->GetLastError());\r
-                }\r
 \r
-                return;\r
+            txtLogMessages->AppendText(_("Transaction begin."));\r
+            txtLogMessages->AppendText(END_OF_LINE);\r
+            if (loginfo && m_logfile)\r
+            {\r
+                m_logfile->Write(_("Transaction begin."));\r
+                m_logfile->Write(END_OF_LINE);\r
+            }\r
+        }\r
+        else\r
+        {\r
+            if (logerror)\r
+            {\r
+                if (logtoscr)\r
+                    txtLogMessages->AppendText(m_impconn->GetLastError());\r
+                if (m_logfile)\r
+                    m_logfile->Write(m_impconn->GetLastError());\r
             }\r
+\r
+            return;\r
         }\r
 \r
         if (impmode==IMPORTMODECOPY)\r
@@ -4321,12 +4322,12 @@ bool frmImport::GenCSVSQLData(wxString& rowdatalist, wxString& rowlog, wxString*
                     else\r
                         rowdatalist.Append(wxT("NULL"));\r
                 }\r
-                else if (m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
+                else if (impmode==IMPORTMODEINSERT && m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
                     rowdatalist.Append(wxT("DEFAULT"));\r
                 else if (m_colonemptyact[dbcolidx]==IMPEMPTY)\r
                 {\r
-                    if (impmode==IMPORTMODECOPY)\r
-                        rowdatalist.Append(wxT("\"\""));\r
+                    if (impmode==IMPORTMODECOPY);\r
+                        //rowdatalist.Append(wxT("\"\""));\r
                     else\r
                         rowdatalist.Append(wxT("''"));\r
                 }\r
@@ -4406,7 +4407,7 @@ bool frmImport::GenCSVSQLData(wxString& rowdatalist, wxString& rowlog, wxString*
                         haserror = true;\r
                         rowdatalist.Append(wxT("<ERROR>"));\r
                     }\r
-                    else if (m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
+                    else if (impmode==IMPORTMODECOPY && m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
                         rowdatalist.Append(wxT("DEFAULT"));\r
                     else if (m_colonemptyact[dbcolidx]==IMPZERONUMBER)\r
                         rowdatalist.Append(IMPZERONUMBERDISP);\r
@@ -4414,8 +4415,8 @@ bool frmImport::GenCSVSQLData(wxString& rowdatalist, wxString& rowlog, wxString*
                         rowdatalist.Append(IMPZEROINTERVALDISP);\r
                     else if (m_colonemptyact[dbcolidx]==IMPEMPTY)\r
                     {\r
-                        if (impmode==IMPORTMODECOPY)\r
-                            rowdatalist.Append(wxT("\"\""));\r
+                        if (impmode==IMPORTMODECOPY);\r
+                            //rowdatalist.Append(wxT("\"\""));\r
                         else\r
                             rowdatalist.Append(wxT("''"));\r
                     }\r
@@ -4695,7 +4696,7 @@ bool frmImport::GenODBCSQLData(wxString& rowvals, wxString& rowlog, SQLWCHAR** o
                         haserror = true;\r
                         rowvals.Append(wxT("<ERROR>"));\r
                     }\r
-                    else if (m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
+                    else if (impmode==IMPORTMODECOPY && m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
                         rowvals.Append(wxT("DEFAULT"));\r
                     else if (m_colonemptyact[dbcolidx]==IMPZERONUMBER)\r
                         rowvals.Append(IMPZERONUMBERDISP);\r
@@ -4703,8 +4704,8 @@ bool frmImport::GenODBCSQLData(wxString& rowvals, wxString& rowlog, SQLWCHAR** o
                         rowvals.Append(IMPZEROINTERVALDISP);\r
                     else if (m_colonemptyact[dbcolidx]==IMPEMPTY)\r
                     {\r
-                        if (impmode==IMPORTMODECOPY)\r
-                            rowvals.Append(wxT("\"\""));\r
+                        if (impmode==IMPORTMODECOPY);\r
+                            //rowvals.Append(wxT("\"\""));\r
                         else\r
                             rowvals.Append(wxT("''"));\r
                     }\r
@@ -4776,12 +4777,12 @@ bool frmImport::GenODBCSQLData(wxString& rowvals, wxString& rowlog, SQLWCHAR** o
                     else\r
                         rowvals.Append(wxT("NULL"));\r
                 }\r
-                else if (m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
+                else if (impmode==IMPORTMODECOPY && m_colonemptyact[dbcolidx]==IMPDEFAULT)\r
                     rowvals.Append(wxT("DEFAULT"));\r
                 else if (m_colonemptyact[dbcolidx]==IMPEMPTY)\r
                 {\r
-                    if (impmode==IMPORTMODECOPY)\r
-                        rowvals.Append(wxT("\"\""));\r
+                    if (impmode==IMPORTMODECOPY);\r
+                        //rowvals.Append(wxT("\"\""));\r
                     else\r
                         rowvals.Append(wxT("''"));\r
                 }\r
@@ -5545,7 +5546,7 @@ void frmImport::ResetColSettingSrcColEditor(bool resetsrccol)
     }\r
 }\r
 \r
-void frmImport::ResetColSettingOnEmptyColEditor()\r
+void frmImport::ResetColSettingOnEmptyColEditor(int dbcolnr)\r
 {\r
     // This function will reset:\r
     // Trim column's default value\r
@@ -5563,10 +5564,22 @@ void frmImport::ResetColSettingOnEmptyColEditor()
     else\r
         return;\r
 \r
+    size_t fromcolnr, tocolnr;\r
+    if (dbcolnr=wxNOT_FOUND)\r
+    {\r
+        fromcolnr = (size_t)0;\r
+        tocolnr = m_tgtcolsnum;\r
+    }\r
+    else\r
+    {\r
+        fromcolnr = (size_t)dbcolnr;\r
+        tocolnr = (size_t)dbcolnr+1;\r
+    }\r
+\r
     size_t rowidx;\r
     wxString tgtcoltype, srccolname, onemptyact;\r
     bool hassrccol;\r
-    for (rowidx=(size_t)0; rowidx<m_tgtcolsnum; rowidx++)\r
+    for (rowidx=fromcolnr; rowidx<tocolnr; rowidx++)\r
     {\r
         tgtcoltype = (*(m_tgtcolstypes+rowidx))->Name();\r
         srccolname = gridColSetting->GetCellValue(rowidx, SRCCOLNAMENUM);\r
@@ -5582,8 +5595,7 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
             if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
                 gce_onempty->Append(IMPDEFAULTDISP);\r
             if (hassrccol && !m_tgtcolsisnotnull[rowidx])\r
@@ -5595,20 +5607,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPBOOLFALSEDISP);\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
         else if (tgtcoltype==wxT("integer") || tgtcoltype==wxT("bigint") || tgtcoltype==wxT("smallint") || tgtcoltype==wxT("numeric") ||\r
@@ -5621,9 +5625,8 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
+            gce_onempty->Append(IMPERRORDISP);\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
                 gce_onempty->Append(IMPDEFAULTDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
@@ -5634,20 +5637,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPZERONUMBERDISP);\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
         else if (tgtcoltype==wxT("character") || tgtcoltype == wxT("character varying") || tgtcoltype == wxT("text"))\r
@@ -5658,13 +5653,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
+                gce_onempty->Append(IMPDEFAULTDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
             gce_onempty->Append(IMPEMPTYDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                gce_onempty->Append(IMPDEFAULTDISP);\r
             gce_onempty->Append(IMPCONSTDISP);\r
             if (impmode==IMPORTMODEINSERT)\r
                 gce_onempty->Append(IMPEXPRDISP);\r
@@ -5680,12 +5674,11 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
+                gce_onempty->Append(IMPDEFAULTDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                gce_onempty->Append(IMPDEFAULTDISP);\r
             if (impmode==IMPORTMODEINSERT)\r
                 gce_onempty->Append(IMPCURDATEDISP);\r
             gce_onempty->Append(IMPCLIENTTIMEDISP);\r
@@ -5695,20 +5688,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, wxT("<current date>"));\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
         else if (tgtcoltype == wxT("time") || tgtcoltype == wxT("timetz")\r
@@ -5720,12 +5705,11 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
+                gce_onempty->Append(IMPDEFAULTDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                gce_onempty->Append(IMPDEFAULTDISP);\r
             gce_onempty->Append(IMPCONSTDISP);\r
             if (impmode==IMPORTMODEINSERT)\r
             {\r
@@ -5738,20 +5722,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, wxT("<current time>"));\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
         else if (tgtcoltype == wxT("timestamp") || tgtcoltype == wxT("timestamptz")\r
@@ -5763,11 +5739,10 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
                 gce_onempty->Append(IMPDEFAULTDISP);\r
             gce_onempty->Append(IMPCONSTDISP);\r
             if (impmode==IMPORTMODEINSERT)\r
@@ -5781,20 +5756,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, wxT("<current_timestamp>"));\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
         else if (tgtcoltype == wxT("interval"))\r
@@ -5805,11 +5772,10 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
                 gce_onempty->Append(IMPDEFAULTDISP);\r
             gce_onempty->Append(IMPZEROINTERVALDISP);\r
             gce_onempty->Append(IMPCONSTDISP);\r
@@ -5818,20 +5784,12 @@ void frmImport::ResetColSettingOnEmptyColEditor()
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPZEROINTERVALDISP);\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
         else\r
@@ -5842,32 +5800,23 @@ void frmImport::ResetColSettingOnEmptyColEditor()
             gridColSetting->SetCellEditor(rowidx, actcolnum, new pgGridCellChioceEditor());\r
             gce_onempty = (pgGridCellChioceEditor*)gridColSetting->GetCellEditor(rowidx, actcolnum);\r
 \r
-            if (hassrccol)\r
-                gce_onempty->Append(IMPERRORDISP);\r
+            gce_onempty->Append(IMPERRORDISP);\r
+            if ((!hassrccol || impmode==IMPORTMODEINSERT) && (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx])))\r
+                gce_onempty->Append(IMPDEFAULTDISP);\r
             if (!m_tgtcolsisnotnull[rowidx])\r
                 gce_onempty->Append(IMPNULLDISP);\r
-            if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                gce_onempty->Append(IMPDEFAULTDISP);\r
             gce_onempty->Append(IMPCONSTDISP);\r
             if (impmode==IMPORTMODEINSERT)\r
                 gce_onempty->Append(IMPEXPRDISP);\r
 \r
             if (onemptyact.IsEmpty() || !gce_onempty->Contains(onemptyact))\r
             {\r
-                if (hassrccol)\r
-                {\r
-                    if (m_tgtcolsisnotnull[rowidx])\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                }\r
+                if ((!hassrccol || impmode==IMPORTMODEINSERT) && m_tgtcolshasdef[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
+                else if (m_tgtcolsisnotnull[rowidx])\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPERRORDISP);\r
                 else\r
-                {\r
-                    if (!m_tgtcolsisnotnull[rowidx] || (m_tgtcolsisnotnull[rowidx] && m_tgtcolshasdef[rowidx]))\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPDEFAULTDISP);\r
-                    else\r
-                        gridColSetting->SetCellValue(rowidx, actcolnum, IMPCONSTDISP);\r
-                }\r
+                    gridColSetting->SetCellValue(rowidx, actcolnum, IMPNULLDISP);\r
             }\r
         }\r
 \r
index 877e30a7e6646642756cadc46f61a62382f53e3a..eb3a2c9d6887c5befe6dee1b35ebf049b1cfd96b 100755 (executable)
@@ -165,7 +165,7 @@ private:
     void InitColSettingPage();\r
     void ResetColSettingPage();\r
     void ResetColSettingSrcColEditor(bool resetsrccol = true);\r
-    void ResetColSettingOnEmptyColEditor();\r
+    void ResetColSettingOnEmptyColEditor(int dbcolnr = wxNOT_FOUND);\r
     void ResetColSettingFmtColEditor();\r
     void ResetColsSettingStatus(int dbcolnr = wxNOT_FOUND);\r
     void ParseColsImpSetting(int dbcolnr = wxNOT_FOUND);\r
index 7507dc9a8d9ab18b3b7f127e681dbb710c65da2e..e15778f11c9a1f7ca017464f28082d47e5621d57 100755 (executable)
@@ -14,7 +14,7 @@ class pgCSVFile
 public:\r
     // Archive format\r
     enum ArchiveFormat { ARCHUNKNOWN=0, ARCHZIP=0x1, ARCHTAR=0x2, ARCHGZIP=0x4, ARCHBZIP2=0x8 };\r
-    static const uint MAXENTRYNUM = 127;\r
+    static const unsigned int MAXENTRYNUM = 127;\r
     // Unix: LF, Dos: CR LF, Mac: CR\r
     static const wxChar LF = wxT('\n');//'LF' = 0xA = 10\r
     static const wxChar CR = wxT('\r');//'CR' = 0xD = 13\r
index f228a87d42daf508f04cbb4e9d72a9a2aa6db6fa..803482c0b3497f3fbf2eb8b3b0baee105af6c871 100755 (executable)
@@ -1280,7 +1280,14 @@ size_t pgCSVFile::GenCSVPreview(const bool isinit)
                     break;\r
                 }\r
                 if (GenMoreFilePreview(NULL)==wxInvalidOffset)\r
+                {\r
+                    GenHeader();\r
+\r
+                    if (isinit)\r
+                        m_pvrowsnum = m_firstrowisheader?m_pvparsedrowsnum-1:m_pvparsedrowsnum;\r
+\r
                     return m_pvparsedrowsnum;\r
+                }\r
                 filedata = m_pvfilecont.GetData();\r
                 isfileeof = Eof();\r
             }\r