Вопрос вот такой,как сделать чтобы выделеенные записи DBGrid'копировывались из одной таблицы(BDE) в другую(BDE).
Второй вопрос при умножении 2-х флотов постоянно возникает ошибка то edit пустой то пользователь вместо запятой поставил точку,как это обойти.
Здравствуйте, Dsm00k, Вы писали:
D>Вопрос вот такой,как сделать чтобы выделеенные записи DBGrid'копировывались из одной таблицы(BDE) в другую(BDE).
В хелпе есть практически готовый пример.
Предположим что грид привязан к Table1, а скопировать надо в Table2, причем поля у этих двух таблиц ессно должны быть одинаковыми, тогда это будет выглядеть примерно так:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
Table2.Append;
for j := 0 to FieldCount-1 do
Table2.Fields[j].Value := Fields[j].Value;
Table2.Post;
end;
end;
Другой вариант — в таком же цикле составить строку sql-запроса (INSERT INTO ...), и потом ее выполнить. Table2, если требуется, ессно открыть заново.
D>Второй вопрос при умножении 2-х флотов постоянно возникает ошибка то edit пустой то пользователь вместо запятой поставил точку,как это обойти.
Не понял вопроса. Во-первых не надо давать юзеру вводить в едит что угодно. Для этого можно, например, использовать маску ввода или делать дополнительные проверки в OnKeyPress компонента. Во-вторых при конвертации флоата в строку и наоборот следует избавиться от зависимости от региональных настроек (т.е. всегда использовать или точку или запятую), как это сделать — в поиск по сайту (по StringReplace, DecimalSeparator). Ну и в третьих вообще-то есть try-except on EConvertError do ; end;
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde