Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Копирование строк из Грида в таблицу БД построчно

1.2K
25 января 2005 года
richel
142 / / 20.01.2005
У кого-нибудь есть готовый код передачи данных из выделенных строк таблицы Грид в таблицу Table1 БД SQL, доступ через ADO. И с эти вопросом запарилась. В какие-то дебри углубилась. Буду очень благодарна.:)
1.2K
25 января 2005 года
richel
142 / / 20.01.2005
Немного больше информации: база My SQL подключение через ADO, копирование из таблицы Грид производится в запрос.
С помощью форума удалось написать такой код:
Цитата:
void __fastcall TForm1::Button8Click(TObject *Sender)
{
String TableName = "Load_Bookmark"; //Запрос, куда копируются строки из Грида
String newSqlTable ="CREATE TABLE dbo."+TableName+" (CardID int PRIMARY KEY CLUSTERED IDENTITY(1, 1) NOT NULL, KodSyst int,";
String newSqlTable1 = "GostID char (14), Project_Def char (10), NameRD char (250), Gruppa char (10), Nomer char (6),";
String newSqlTable2 = "Sapis int, Massa real, PlechoX real, PlechoY real, PlechoZ real,";
String newSqlTable3 = "Department char (3), DataSapoln datetime, Prim char (400), Slujebn ntext,";
String newSqlTable4 = "dmhP real, Prozent real, Developer char (20), Mx_R float, My_R float, Mz_R float, ImageArh int)";

ModuleLoad->ADOBookmark->SQL->Clear();
ModuleLoad->ADOBookmark->SQL->Add(newSqlTable);
ModuleLoad->ADOBookmark->SQL->Add(newSqlTable1);
ModuleLoad->ADOBookmark->SQL->Add(newSqlTable2);
ModuleLoad->ADOBookmark->SQL->Add(newSqlTable3);
ModuleLoad->ADOBookmark->SQL->Add(newSqlTable4);
ModuleLoad->ADOBookmark->ExecSQL();
ModuleLoad->ADOBookmark->Close();

if (DBGridEh2->SelectedRows->Count > 0)
{
AnsiString Misc="",s = "";
TDataSet *pDS = DBGridEh2->DataSource->DataSet;
for (int i=0; i < DBGridEh2->SelectedRows->Count; i++)
{
pDS->GotoBookmark((void *)DBGridEh2->SelectedRows->Items.c_str());
for(int j=0;j<pDS->FieldCount;j++)
{TField* Fl=pDS->Fields->Fields[j];

if (!j)
{
Misc=Misc+","+Fl->FieldName;
s =s+"','"+Fl->AsString;
}
else
{
Misc="insert into dbo.Load_Bookmark ("+Fl->FieldName;
s ="values ('"+Fl->AsString;
}
}
Misc=Misc+")";
s=s+"')";
ModuleLoad->ADOBookmark->SQL->Clear();
ModuleLoad->ADOBookmark->SQL->Add(Misc);
ModuleLoad->ADOBookmark->SQL->Add(s);
ModuleLoad->ADOBookmark->ExecSQL();
}
}
}


Копирование, прям-таки, странное. Все проходит без ошибок, но копируются построчно только первый и последний столбцы. Кто-нибудь может объяснить, что не верно в этом коде?

259
26 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by richel
У кого-нибудь есть готовый код передачи данных из выделенных строк таблицы Грид в таблицу Table1 БД SQL, доступ через ADO. И с эти вопросом запарилась. В какие-то дебри углубилась. Буду очень благодарна.:)


Выделенрые строки нужно вибирать через TBookmark. И через SQL - запрос Isert добавлять в таблицу. Вот пример обработки выделенных строк.

Код:
if (DBGrid1->SelectedRows->Count > 0) //если есть выделенные строки
  {
    AnsiString s = "";
    TDataSet *pDS = DBGrid1->DataSource->DataSet;
    for (int i=0; i < DBGrid1->SelectedRows->Count; i++)
    {
      pDS->GotoBookmark((void *)DBGrid1->SelectedRows->Items.c_str()); //Переходим к выделенной строке
      for (int j = 0; j < pDS->FieldCount; j++)
      {
        if (j>0)
          s = s+", ";

        s = s + pDS->Fields->Fields[j]->AsString; //Заполняем значения полей в строку
      }
      ListBox1->Items->Add(s); //Добавляем в ListBox
      s = "";
    }
  }
1.2K
26 января 2005 года
richel
142 / / 20.01.2005
Цитата:
Originally posted by rostyslav

Для отладки нужно бы перед
ModuleLoad->ADOBookmark->SQL->Add(Misc);
написать
ShowMessage(s);
ShowMessage(Misc);

но скорей всего if(!j) нужно поменять на if(j)

Кроме этого, если строковое поле может содержать апострофы, то его значение лучше добавлять через QuotedStr().



Да, условие было неправильным. Да и код пришлось подправить.
Спасибо за помощь!:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог