Добрый вечер! Подскажите как можно сделать проверку на дубликаты? Чтобы если такая запись уже есть в БД то ее нельзя было  повторно добавить?
Добавил такой код:

function CheckDublicate (Action, sTable, sField, sValue: string; id: integer;): boolean;
var
   s: string;
   sIdSQL: string;

   arrFields: array of string;
   arrValues: array of string;

   sWhere: string;
   i,c: integer;
begin
    result := False;
    arrFields := SplitString(sField, ';');
    arrValues := SplitString(sValue, ';');
    if Length(arrFields) <> Length(arrFields) then exit;

    sWhere := '';
    c := Length(arrFields)-1;
    for i := 0 to c do
    begin
        if arrValues[i] <> 'NULL' then
            sWhere := sWhere + arrFields[i]+' LIKE ' + arrValues[i] + ' AND '
        else sWhere := sWhere + arrFields[i]+' IS NULL AND '
    end;

    if sWhere<>'' then SetLength(sWhere, Length(sWhere)-4);

    if Action = 'NewRecord' then
    begin
          s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE '+sWhere);
          if StrToInt(s) > 0 then result := True;
    end;

    if Action = 'ShowRecord' then
    begin
          if id <> -1 then sIdSQL := ' AND (id <> '+ IntToStr(id) +')';
          s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE ('+ sWhere +') ' + sIdSQL);
          if StrToInt(s) > 0 then result := True;
    end;
end;

procedure frmRegDoruchenia_Button4_OnClick (Sender: string; var Cancel: boolean);
var
   sFields, sValues: string;
begin
    sFields := 'NumberDoruchenia;DataDoruchenia';
    sValues := frmRegDoruchenia.Edit1.sqlValue+';'+frmRegDoruchenia.DateTimePicker1.sqlDate;

   if CheckDublicate(frmRegDoruchenia.dbAction, 'Doruchenia', sFields, sValues, frmRegDoruchenia.Button4.dbGeneralTableId) then
   begin
        ShowMessage('Доручення з таким номером вже зареєстровано!');
        Cancel := True;
   end;
end;

но он у меня не работает. База данных на MySQL

2

(3 replies, posted in Russian)

Скажите пожалуйста как можно сделать автообновление для своего проекта?

DriveSoft wrote:

inter1292
Поправил кодировку, скачайте пожалуйста бета версию 1.53
https://www.dropbox.com/s/x8fmbj7mycf0u … 3.zip?dl=0

Из кодировкой всё ОК, спасибо, но остался баг из задваиванием отправки писем (первый раз перед добавлением номера, а второй раз после регистрации отказа) форма frmReestrVidmovu, кнопка Button2 и Button6.

DriveSoft wrote:

Данный таймаут говорит о том, что при попытке отправки емейла не удалось соединиться с сервером, проверьте ваши настройки SMTP сервера в функции SendMail, также возможно фаервол на компьютере блокирует соединение.

SMTP настроил но он отправляет дважды емейл первый раз перед добавлением номера, а второй раз после регистрации отказа. Как можно ето исправить?

И подскажите как бороться из крякозябрами в сообщении? (Скриншот прилагаю)

При нажатии кнопки "+" и при реестрации отказа(

DriveSoft wrote:

Создайте событие OnAfterClick для кнопки "Зареєструвати відмову"

procedure frmReestrVidmovu_Button2_OnAfterClick (Sender: string);
var
    email,msg: string;
begin
    // узнаем email выбранного адвоката в cbAdvokat    
    email := SQLExecute('SELECT email FROM Rejestr_advokatov WHERE id='+frmReestrVidmovu.cbAdvokat.sqlValue);

    // если e-mail есть, то формируем сообщение и отправляем
    if email <>'' then 
    begin
        msg := 'Дата відмови: ' + DateToStr(frmReestrVidmovu.DateTimePicker1.DateTime)+#13;
        msg := msg + 'Час відмови: ' + TimeToStr(frmReestrVidmovu.DateTimePicker2.DateTime)+#13;
        msg := msg + 'Реєстраційний номер відмови: '+ frmReestrVidmovu.edIdYear.Text+#13;
        msg := msg + 'Орган повідомлення' + frmReestrVidmovu.ComboBox3.Text;
        SendMail('smtp.mail.ru', 'login', 'password', 465, 'yourmail@mail.ru', 'tomail@gmail.com', 'Тема письма', msg, '');
    end;

end;

нет необходимости в ComboBox1 на форме.

Всё сделал как вы написали, но постоянно выдает таймаут подлючения и начала глючить кнопка ввода телефона на форме frmReestrVidmovu (кнопка "+" без названия, под гридом).

Здраствуйте Дмитрий! И снова у меня проблема, немогу сделать зависимое поле в форме frmReestrVidmovu (поле ComboBox1 зависит от поля cbAdvokat). И подскажите пожалуйста как сделать чтобы данные введенные в  frmReestrVidmovu автоматично отправлялись на указаный в ComboBox1 електронный адрес? Возножно ли это сделать? Огромное списибо за столь прекрасную программу!!!

DriveSoft wrote:
inter1292 wrote:

Доброго времени суток! Как можно сделать настрйки почтовика поумолчании и скрытную отправку почты на выбраный автоматически адрес??? Заранее большое спасибо!

Приветствую,


чтоб вы имеете ввиду под настройками по умолчанию?
вам необходим SMTP сервер для отправки e-mail сообщений, обычно каждый почтовый сервер предоставляет такой доступ, например тот же mail.ru

http://help.mail.ru/mail-help/mailer/popsmtp

Настройки SMTP есть, как закрепить их в форме что бы каждый раз не вводит?

DriveSoft wrote:

inter1292
Нужен логин/пароль от любого почтового сервера, чтобы можно было отправлять e-mail непосредственно с программы
Пример
http://myvisualdatabase.com/forum/viewtopic.php?id=1365

Доброго времени суток! Подскажите как можно сделать настрйки почтовика по-умолчании и скрытную отправку почты на выбраный автоматически адрес??? Заранее большое спасибо!

DriveSoft wrote:
inter1292 wrote:

Уважаемый DriveSoft подскажите пожалуйста как можно реализовать отправку электронной почты адвокату (у каждого своя электронная почта) из уведомлением о внесение его в реестр отказов, при нажатие кнопки "Зареєструвати відмову" и если да, то как сделать настраиваемый шаблон сообщения?

У вас есть доступ к SMTP серверу для отправки E-mail сообщений?

Нужен обязательно свой смтп или имеется в виду какойто почтовый сервер?

Уважаемый DriveSoft подскажите пожалуйста как можно реализовать отправку электронной почты адвокату (у каждого своя электронная почта) из уведомлением о внесение его в реестр отказов, при нажатие кнопки "Зареєструвати відмову" и если да, то как сделать настраиваемый шаблон сообщения?

Большущое спасибо!

DriveSoft wrote:

inter1292
но у меня нет данного отчета, чтобы я смог исправить его, приложите последнюю версию вашего проекта.

DriveSoft wrote:

inter1292
К сожалению не вижу в отчете задваивания заголовков, можно скрин?

DriveSoft wrote:
inter1292 wrote:

форма frmChoice, кнопка Роздрукувати звіт далі форма frmZvit кнопка Сформувати журнал відмов

Готово.

Спасибо за помощь, но немогу убрать задваивание зоголовка в данном отчете! Помогите пожайлуста!

форма frmChoice, кнопка Роздрукувати звіт далі форма frmZvit кнопка Сформувати журнал відмов

Помогите пожалуйста из формированием отчета!

Как сделать что бы в отчете не дублировались поля, а выводилась информация только та что внесенная в форме frmJurnal (таблица Jurnal)?
Отчет - JurnalVidmov.fr3

Огромное спасибо за помощь! Сам бы не додумался!

Программа просто супер!

Что бы в форме frmReestrVidmovu в поле ComboBox1 выбирался адвокат, а в поле ComboBox2 можно было выбрать номер телефона принадлежащий даному адвокату на который был осуществлем звонок (таких номеров может быть несколько), и запись  всех етих данных в базу с последюющим просмотром через форму frmJurnal.

Форма frmReestrVidmovu, что бы при выборе фамилии адвоката можно было выбрать от 1 до N-го количества записаных рание номеров, а в случае отсутвствие телефона - добавить его.
P.S. (login - almin? pass - admin)

Немогу реализовать что бы при реестрации отказза адвоката можна было выбрать несколько телефонов и в случае отсутствия такого добавить новый. Прошу Вашей помощи в реализации даной задумки)