Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2013, 12:09   #11
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

соединение с базой у вас одно?
eval вне форума Ответить с цитированием
Старый 21.11.2013, 12:22   #12
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Да с помощью ZConnection
Aleksandr вне форума Ответить с цитированием
Старый 21.11.2013, 12:34   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Скорее всего своё соединение с базой нужно для каждого потока и, соответственно, свой ZConnection. Или синхронизация между потоками с одним ZConnection. Что касается сообщения об ошибке, то AutoCommit отключено, соответственно нужны явные транзакции
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.11.2013, 13:31   #14
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Что значит явные транзакции?
А как включить AutoCommit?
В ZConnection AutoCommit стоит в true

Последний раз редактировалось Aleksandr; 21.11.2013 в 13:52.
Aleksandr вне форума Ответить с цитированием
Старый 21.11.2013, 13:42   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Что значит явные транзакции?
То, с чего исходный вопрос и начинался
Цитата:
А как включить AutoCommit
Не знаю этого компонента, видимо в свойствах ZConnection поискать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 21.11.2013 в 13:53.
Аватар вне форума Ответить с цитированием
Старый 21.11.2013, 14:38   #16
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Вот мой код для 3-й вкладки для остальных подобный. Или это можно как-то по другому реализовать?
Код:
procedure terminal3;
   var str: String;
  S, S1,d1: String;
  s3:real;
  a,b:integer;
  i1,i2: Integer;
  r,m : double;
  i:integer;
  JpegIm: TJpegImage;
  bm: TBitMap;
  d3,d2: TDateTime;
  buf:string;
  v:integer;
 begin
MainForm.IdTCPClient3.Host :=MainForm.labelIP3.Caption;
MainForm.IdTCPClient3.Port := StrToInt(MainForm.LabelPort3.caption);
MainForm.IdTCPClient3.Connect(5000);
MainForm.Memo3.Enabled := True; MainForm.Memo3.Color := clWindow;
MainForm.AddLogWrite('Connect ...... ');
MainForm.RzGlyphStatus4.ImageIndex:=3;
Led0.Brush.Color := clBlue;
try
   repeat
   sleep(5);
   str:=MainForm.IdTCPClient3.Readln();
   if str<>'' then begin
   MainForm.Memo3.Lines.Add(str);
buf:='';
for v:=1 to length(str) do
if str[v] in ['0'..'9', '.', ','] then buf:=buf+str[v];
s1:=buf;
s1:=StringReplace(s1, '.',',' , [rfReplaceAll]);
i1:=Pos(',',s1);
if i1>0 then begin
i2:=PosEx(',',s1,i1+1);
if i2>0 then s1:=Copy(s1,1,i2-1)+Copy(s1,i2+1,Length(s1)-i2);
end;
r:=RoundTo(StrToFloatDef(s1,0),-2);
MainForm.Edit3.Text:=Floattostr(r);
if (r > 0) AND (r <> last_massa) then
begin
MainForm.edtNotes3.Text:=MainForm.edtNotes3.Text+MainForm.Edit3.Text+#9+DateToStr(now) +#9+TimeToStr(now) +#13#10;
if strtofloat(MainForm.Edit3.Text)>strtofloat(OptionForm.RzEdit4.Text) then
begin
sleep(50);
MainForm.ZConnection3.StartTransaction;
try
MainForm.zQuery3.SQL.Clear;
MainForm.zQuery3.SQL.Add ('INSERT INTO base (Date_posting, Time_posting, num, Massa, Name, Image, Com, BaudRate, Organization, Location, IP, Note, Model, Equopment, Linkey, Stable_weight, Image_kamera)' );
MainForm.zQuery3.SQL.Add(' Values (:date1, :date2, 1, :massa, :name,''image'', :port, :BaudRate, :Organization, :Location, :Ip, :Note, :Model, :Equopment, :Linkey, 0, :adress)');
d3:=Trunc(Date);
d2:=frac(time);
MainForm.zQuery3.ParamByName('date1').Value:=d3;
MainForm.zQuery3.ParamByName('date2').Value:=d2;
MainForm.zQuery3.ParamByName('massa').Value:=MainForm.Edit3.Text;
MainForm.zQuery3.ParamByName('name').Value:=MainForm.labelModel3.Caption+' '+MainForm.LabelEquopment3.Caption;
MainForm.zQuery3.ParamByName('port').Value:=MainForm.labelPort3.Caption;
MainForm.zQuery3.ParamByName('BaudRate').Value:=MainForm.LabelBaudRate3.Caption;
MainForm.zQuery3.ParamByName('Organization').Value:=MainForm.LabelOrganization3.Caption;
MainForm.zQuery3.ParamByName('Location').Value:=MainForm.LabelLocation3.Caption;
MainForm.zQuery3.ParamByName('Ip').Value:=MainForm.LabelIp3.Caption;
MainForm.zQuery3.ParamByName('Note').Value:=MainForm.labelNote3.Caption;
MainForm.zQuery3.ParamByName('Model').Value:=MainForm.labelModel3.Caption;
MainForm.zQuery3.ParamByName('Equopment').Value:=MainForm.labelEquopment3.Caption;
MainForm.zQuery3.ParamByName('Linkey').Value:=MainForm.labelLinkey3.Caption;
MainForm.zQuery3.ParamByName('adress').Value:=OptionForm.DirectoryEdit1.Text+'\NO.jpg';
MainForm.zQuery3.ExecSQL;
MainForm.ZConnection3.Commit;
Except
MainForm.ZConnection3.Rollback;
end;
last_massa := r;
     end;
  end;
        until str='';
    finally
    MainForm.Timer5.Enabled:=true;
    end;
 end;
Aleksandr вне форума Ответить с цитированием
Старый 21.11.2013, 14:44   #17
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

и такая партянка для всех вкладок повторяется? ужас
eval вне форума Ответить с цитированием
Старый 21.11.2013, 14:47   #18
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

к сожалению да.
Aleksandr вне форума Ответить с цитированием
Старый 21.11.2013, 17:00   #19
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

А как можно это реализовать по другому?
Aleksandr вне форума Ответить с цитированием
Старый 21.11.2013, 17:06   #20
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

это все опять в отдельном потоке? разберитесь сначала с потоками
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транзакция V_a_d БД в Delphi 14 12.11.2012 17:00
write-транзакция в MyDAC 3D Hunter БД в Delphi 7 05.03.2012 14:45