Помощь программирование Delphi
77 повідомлень
#16 років тому
Здравствуйте все великие магистры кодинга) нужна помошь!сталкнулся со следующей проблемой
делаю вставку записей в таблицу с условием через Query
....
.....
procedure TForm1.Action3Execute(Sender: TObject);
begin
//проверка введен ли период
if MaskEdit1.Text<>MaskEdit1.EditText then begin
ShowMessage('Не указан период!'

Exit;
end;
if MaskEdit2.Text<>MaskEdit2.EditText then begin
ShowMessage('Не указан период!'

Exit;
end;
// указываем путь к базе настроек в которой прописаны пути к файлам с базами из которых будем копирывать записи
mDBFTable1.TableName:=ExtractFilePath(Application.exename)+ 'Date\Path.dbf';
mDBFTable1.Open;
vip:=ExtractFilePath(Application.exename)+ 'Out\S_bppr_p.dbf'; // указываем путь к базе в которую будем вставлять записи
mDBFTable1.First; // переход на первую запись
While not mDBFTable1.eof do //делать цикл пока таблица не закончится
begin
put:=mDBFTable1.FieldByName('pathu'

user:=mDBFTable1.FieldByName('user'

viplat:=mDBFTable1.FieldByName('vipl'

//проверка если нет файла
if not FileExists(put+'s_bppr.dbf'

begin
ShowMessage('Компьютер '+user+ ' не в сети или отсутствует файл '+put+'s_bppr.dbf'

mDBFTable1.Next;//переходим на следующую запись
end else
begin
// собственно запись и выполнение запроса на выбор записей по условию и вставка их в базу
Query1.SQL.Clear;
Query1.SQL.Add('insert into "'+vip+'" select * from "'+put+'s_bppr.dbf" where Info like "*'+Edit1.Text+'%" and datpol between "'+MaskEdit1.text+'" and "'+ MaskEdit2.text +'" '

Query1.ExecSQL;
Query1.SQL.Clear;
mDBFTable1.Next;//переходим на следующую запись
end;
end;
mDBFTable1.Close;
end;
....
....
все работает только один раз, при повторе данной процедуры вставляются записи но вместо символов кирилицы везде вот такие вот решотки ################# ? как это исправить? обе таблицы DBF кодировка досовая 866
заранее всем откликнувшимся спасибо! если нужно могу выслать исходник
56 повідомлень
#16 років тому
Доброго времени суток! А может попробовать переписать без ExecSql а через AppendRecord.
77 повідомлень
#16 років тому
Цитата ("GeminiPro"):Доброго времени суток! А может попробовать переписать без ExecSql а через AppendRecord.можешь показать кусок кода с примером appendrecord ?
13 повідомлень
#16 років тому
Можно и без аппендрекорда обойтись.Для начала попробовать параметризованный запрос.
1895 повідомлень
#16 років тому
Какая версия делфи ?На 7 нужен 2 апдейт ставить обьязательно, как подозреваю работаете через TTable)
вместо этой байди
Цитата:
"'+vip+'"
нужно писать
Цитата:
quotedstr(vip)
execsql можно применять на самом конекте, на Table )
вместо Application.exename нужно писать params(0), хотя у вас задействован Forms, но всетаки так более правильней
многовато mDBFTable1.Next; , здесь точно все ок? с таким форматированием кода его сложно понять
и юзайте query.params код станет намного понятней сразу)
Цитата:
//проверка введен ли период
if MaskEdit1.Text<>MaskEdit1.EditText then begin
ShowMessage('Не указан период!';
Exit;
end;
if MaskEdit2.Text<>MaskEdit2.EditText then begin
ShowMessage('Не указан период!';
Exit;
end;
это что за байда?
не проще писать так
if (MaskEdit1.Text<>MaskEdit1.EditText) or (MaskEdit2.Text<>MaskEdit2.EditText) then //проверяем все параметры
ShowMessage('Не указан период!');
else BEGIN
// параметри проверены, работаем
END;
в общем наведите марафет в коде... )
77 повідомлень
#16 років тому
Цитата ("MMM_Corp"):Какая версия делфи ?
На 7 нужен 2 апдейт ставить обьязательно, как подозреваю работаете через TTable)
Версия 7.0
Чистка кода есть такое, но больше интересует собственно запись и выполнение запроса на выбор записей по условию и вставка их в базу
вот так все работает
Query1.SQL.Clear;
Query1.SQL.Add('insert into "'+vip+'" select * from "'+put+'s_bppr.dbf" where Info like "*'+Edit1.Text+'%" and datpol between "'+MaskEdit1.text+'" and "'+ MaskEdit2.text +'" '

Query1.ExecSQL;
но при повторе запроса еще раз в базу вставляются решетки вместо кирилицы
1895 повідомлень
#16 років тому
Если с квери тянуть строки, то они норм. отображаются? Гдето между 1 и 2 заливкой инфи идёт дисконект/конект, настройка кодировки?