Как проверить массив значений
for (int Row = 1; Row < xlRow; ++Row)
for (int Column = 1; Column < 8; ++Column)
{
cur[Column] = vVarSheet.OlePropertyGet("Cells",Row,Column);
result[Column] = cur[Column].OlePropertyGet("Value");
answer = String(result[Column]);
if (!(AnsiString(result[1]).IsEmpty()) &&
AnsiString(result[2]).IsEmpty() && AnsiString(result[3]).IsEmpty()
))
{ ShowMessage(answer);
}
else
continue;
} [/COLOR]
Это мой вариант. Но что-то тут не то. Помогите мне правильно написать условие. Пожалуйста!
Раскрываю файл Excel. В нем, допустим, 7 колонок. Построчно из каждой колонки мне нужно вытащить значение. Затем, если заполнены первые три колонки значениями, то в сообщение (это для упрощения) вывести значения из всех колоной строки. Если встречается другая вариация (например, первая колонка пуста, остальные заняты или все пустые - тут не нужно перечислять), то строку просто пропустить. У меня не получается. А делаю так:
Это мой вариант. Но что-то тут не то. Помогите мне правильно написать условие. Пожалуйста!
//----------------------------------------------------
Variant result[NumCol],cur[NumCol];
AnsiString answer;
answer = "";
for (int Row = 1; Row < xlRow; ++Row)
{
for (int Column = 1; Column < 8; ++Column)
{
cur[Column] = vVarSheet.OlePropertyGet("Cells",Row,Column);
result[Column] = cur[Column].OlePropertyGet("Value");
answer = answer + String(result[Column]);
}
if (!(AnsiString(result[1]).IsEmpty()) &&
AnsiString(result[2]).IsEmpty() && AnsiString(result[3]).IsEmpty()
))
{ ShowMessage(answer);
}
else
{
}
answer = "";
}
//---------------------------------------------------------
Но вот теперь такая проблема - вместо вывода значения в сообщение
мне нужно написать код вставки этих значений в таблицу БД. Кол-во столбцов в таблице Excel совпадает с кол-вом полей в таблице БД. Код у меня такой (пока без проверки данных на наличие в числовом значении "." или ",").
if (!ds->Active) ds->Active = true;
ds->DisableControls();
try {
ds->Append();
ds->Fields->Fields[Column]->Value = answer;
ds->Fields->Fields[21]->AsString = "19146"; // Project
ds->Fields->Fields[22]->AsString = "fg"; // Variant
if (ds->State == dsEdit && ds->State == dsInsert) ds->Post();
} // try DisableControls
catch(Exception &xcp) { ShowMessage(xcp.Message); }
ds->Last();
ds->EnableControls();
Вопроса 2: 1) Fields[Column] у меня теперь за пределами цикла и, естественно, не проходит.
2)
- это целая строка, причем, начиная с середины, я не могу разобрать, что это выводятся за значения (все числовые значения не похожи на те, которые должны быть). Если я пишу код
, то выводится значение последнего столбца. А мне нужно каждое значение столбца вставить в поле таблицы БД. Я приведу пример xsl файла, а то вслепую, наверное, трудно давать советы?