mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
Fix generate Insert SQL instruction. Copying result lines based on a template.
1. При некоторых настройках при генерации Insert инструкций, пустые строки заменялись на null.
Этот коммит исправлет проблему.
2. Результаты запросов можно оформить произвольным образом используя шаблоны указанные в однострочных
коментариях.
Формат шаблона: --@gen:Имя шаблона в контестном меню результата:Тут текст шаблона - cols = @colname@,@colname2,a@\n
Для добавлнения перевода строк в вывод можно использовать \n.
Коментарии указывается в теле запроса (можно указать перед запросом).
Можно указать строку из которой нужно сделать выбрать содержимое:
@colname[-1]@ - содержимое колонки colname предыдущей строки(относительная адресация).
@colname[0]@ - содержимое колонки colname 1 строки (или выделенного диапазона строк).
Адресация с начинается с 0. Это абсолютная адресация строк.
@colname2,a@ - Указание что результат нужно будет выровнять.
Флаг "а" глобальный его можно указать у любой колонки.
Флаги указываются в самом конце определения колонки после запятой. Пример: @col1[-1],a@
Если перечень имен колонок запроса не совпадает со списком полей шаблона то шаблон не будет добавлен
в контекстное меню Generate.
Полученный текст копируется в буфер обмена.
При генерации текста используются настройки "Вид кавычек" и "Что брать в кавычки".
Шаблоны сохраняются перед выполнением SQL команды и после редактирования шаблона
запрос нужно выполнить повторно.
This commit is contained in:
parent
087ad55c34
commit
a8ddbc4999
8 changed files with 235 additions and 10 deletions
|
|
@ -284,6 +284,7 @@ wxString ctlSQLGrid::GetExportLine(int row, wxArrayInt cols)
|
|||
|
||||
if (GetNumberCols() == 0 || GetRowSize(row) == 0)
|
||||
return str;
|
||||
sqlResultTable *t=(sqlResultTable *)GetTable();
|
||||
wxString colsep = settings->GetCopyColSeparator();
|
||||
if (generatesql == 2 || generatesql == 1) colsep = wxT(",");
|
||||
if (generatesql == 3) colsep = wxT(" and ");
|
||||
|
|
@ -297,7 +298,14 @@ wxString ctlSQLGrid::GetExportLine(int row, wxArrayInt cols)
|
|||
str.Append(colsep);
|
||||
if (col > 0) head.Append(colsep);
|
||||
head = head + GetColumnName(cols[col]);
|
||||
wxString text = GetCellValue(row, cols[col]);
|
||||
wxString text;
|
||||
bool isnull=false;
|
||||
if ( t && generatesql > 0)
|
||||
{
|
||||
// only insert , in_list and where list
|
||||
text = t->GetValueWithNull( row, cols[col] , &isnull );
|
||||
} else text = GetCellValue(row, cols[col]);
|
||||
|
||||
wxString cname = GetColumnName(cols[col]);
|
||||
bool needQuote = false;
|
||||
if (settings->GetCopyQuoting() == 1)
|
||||
|
|
@ -307,12 +315,12 @@ wxString ctlSQLGrid::GetExportLine(int row, wxArrayInt cols)
|
|||
else if (settings->GetCopyQuoting() == 2)
|
||||
/* Quote everything */
|
||||
needQuote = true;
|
||||
if (text.Length() == 0 && generatesql > 0) { needQuote = false; }
|
||||
if (isnull && generatesql > 0) { needQuote = false; }
|
||||
else
|
||||
if (generatesql > 0) needQuote = IsColText(cols[col]);
|
||||
|
||||
if (generatesql > 0) {
|
||||
if (text.Length() != 0) {
|
||||
if (!isnull) {
|
||||
text.Replace(wxT("'"), wxT("''"));
|
||||
}
|
||||
else
|
||||
|
|
@ -320,7 +328,7 @@ wxString ctlSQLGrid::GetExportLine(int row, wxArrayInt cols)
|
|||
|
||||
}
|
||||
if (generatesql == 3) {
|
||||
if (text == "null")
|
||||
if (isnull)
|
||||
str.Append(cname).Append(" is ");
|
||||
else
|
||||
str.Append(cname).Append("=");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue