Topic: значение чекбокс
Как правельно записать скриптом значение чекбокса в поле ДА\НЕТ?
My Visual Database → Russian → значение чекбокс
Как правельно записать скриптом значение чекбокса в поле ДА\НЕТ?
procedure Form1_CheckBox1_OnClick (Sender: TObject); begin if Form1.CheckBox1.sqlValue = '1' then Form1.Edit1.Text := 'Да' else Form1.Edit1.Text := 'Нет' end; begin Form1_CheckBox1_OnClick(nil); end.
не то, не так спрасил:
мне нужно записать значение чекбокса в базу данных (поле ДА\НЕТ) скриптом
Запись значения чекбокса в таблицу <таблица> в поле <поле>
SQLExecute( 'update <таблица> set <поле> = '+ Form1.CheckBox1.sqlValue +' where <условие>' );
<Условие> должно однозначно идентифицировать запись, лучше всего использовать ID, например:
SQLExecute( 'update contractor set customer = '+ Form1.CheckBox1.sqlValue +' where id = '+inttostr(Form1.TableGrid.dbItemId) );
Запись значения чекбокса в таблицу <таблица> в поле <поле>
SQLExecute( 'update <таблица> set <поле> = '+ Form1.CheckBox1.sqlValue +' where <условие>' );
<Условие> должно однозначно идентифицировать запись, лучше всего использовать ID, например:
SQLExecute( 'update contractor set customer = '+ Form1.CheckBox1.sqlValue +' where id = '+inttostr(Form1.TableGrid.dbItemId) );
нет все равно ошибка
я уже разные способы опробывал и в string и integer переводил
procedure frmReceivinOgEquipment_bOkCompany_OnClick (Sender: TObject; var Cancel: boolean);
var tTypeKC : string = IntToStr(frmReceivinOgEquipment.cbTCK.DbItemID);
tNameCompany : string = IntToStr(frmReceivinOgEquipment.cbNameCompany.DbItemID);
tNameTypeOfEquipment : string = IntToStr(frmReceivinOgEquipment.cbNameTypeOfEquipment.DbItemID);
tNameManufacturer : string = IntToStr(frmReceivinOgEquipment.cbNameManufacturer.DbItemID);
tDate : string = FormatDateTime('yyyy-mm-dd',frmReceivinOgEquipment.dtDateInServise.DateTime);
tCompanyOrApp : string = IntToStr(frmReceivinOgEquipment.cbnameclCompanyOrApp.DbItemID);
tStatusName : string = IntToStr(frmReceivinOgEquipment.cbStatusName.DbItemID);
tCount : string = frmNewApplication.RecordCount.Text;
//sOnlyDiagnostic: string = BoolString('frmReceivinOgEquipment.cbOnlyDiagnostic.Checked');
//sWarranty: string = BoolString('frmReceivinOgEquipment.cbWarranty.Checked');
//sOnlyDiagnostic, sWarranty:string;
//sOnlyDiagnostic, sWarranty:integer;
begin
//if frmReceivinOgEquipment.cbOnlyDiagnostic.Checked then sOnlyDiagnostic:='1' else sOnlyDiagnostic:='0';
//if frmReceivinOgEquipment.cbWarranty.Checked then sWarranty:='1' else sWarranty:='0';
//проверка на заполнение полей
if (tTypeKC='-1') then ShowHint(frmReceivinOgEquipment.cbTCK, 'данное поле обязательное для заполнения ')else
if (tDate='-1') then ShowHint(frmReceivinOgEquipment.dtDateInServise, 'данное поле обязательное для заполнения ')else
if (tNameCompany='-1') then ShowHint(frmReceivinOgEquipment.cbNameCompany, 'данное поле обязательное для заполнения ')else
if (tNameTypeOfEquipment='-1') then ShowHint(frmReceivinOgEquipment.cbNameTypeOfEquipment, 'данное поле обязательное для заполнения ')else
if (tNameManufacturer='-1') then ShowHint(frmReceivinOgEquipment.cbNameManufacturer, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.eModel.Text='') then ShowHint(frmReceivinOgEquipment.eModel, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.eSerialNamber.Text='') then ShowHint(frmReceivinOgEquipment.eSerialNamber, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.eEquipment.Text='') then ShowHint(frmReceivinOgEquipment.eEquipment, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.mDescriptionATCsWords.Text='') then ShowHint(frmReceivinOgEquipment.mDescriptionATCsWords, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.mExternalStatus.Text='') then ShowHint(frmReceivinOgEquipment.mExternalStatus, 'данное поле обязательное для заполнения ')else
begin
// запись в таблицы базы данных
SQLExecute('INSERT INTO servise (Warranty, OnlyDiiagnostics, dateInServise, id_status, id_Company, id_TypeOfEquipment, id_manufacturer, model, serialNamber, equipment, externalStatus, descriptionATCsWords, id_clCompanyOrApp, record_count) VALUES ("'+frmReceivinOgEquipment.cbWarranty.sqlValue+'", "'+frmReceivinOgEquipment.cbOnlyDiagnostic.sqlValue+'", "'+tDate+'", "'+tStatusName+'", "'+tNameCompany+'", "'+ tNameTypeOfEquipment + '", "'+tNameManufacturer+'", "'+frmReceivinOgEquipment.eModel.Text+'", "'+frmReceivinOgEquipment.eSerialNamber.Text+ '", "'+frmReceivinOgEquipment.eEquipment.Text+ '", "'+ frmReceivinOgEquipment.mDescriptionATCsWords.Text+ '", "'+ frmReceivinOgEquipment.mExternalStatus.Text+ '", "'+tCompanyOrApp+'", "'+tCount+'")');
// обновление таблицы данных главной формы
frmServiceCen.tgList.dbUpdate;
frmReceivinOgEquipment.RecordCount.Text := IntToStr(GetNewRecordCount('servise'));
//закрытие формы
frmReceivinOgEquipment.Close;
end;
end;
У вас какая СУБД? В SQLite для хранения логического значения используется поле Integer, в этом случае при передаче значения в тексте запроса кавычки не нужно ставить:
SQLExecute('INSERT INTO servise (Warranty, OnlyDiiagnostics, dateInServise, id_status, id_Company, id_TypeOfEquipment, id_manufacturer, model, serialNamber, equipment, externalStatus, descriptionATCsWords, id_clCompanyOrApp, record_count) VALUES ('+frmReceivinOgEquipment.cbWarranty.sqlValue+', '+frmReceivinOgEquipment.cbOnlyDiagnostic.sqlValue+', "'+tDate+'", "'+tStatusName+'", "'+tNameCompany+'", "'+ tNameTypeOfEquipment + '", "'+tNameManufacturer+'", "'+frmReceivinOgEquipment.eModel.Text+'", "'+frmReceivinOgEquipment.eSerialNamber.Text+ '", "'+frmReceivinOgEquipment.eEquipment.Text+ '", "'+ frmReceivinOgEquipment.mDescriptionATCsWords.Text+ '", "'+ frmReceivinOgEquipment.mExternalStatus.Text+ '", "'+tCompanyOrApp+'", "'+tCount+'")');
P.S. А почему вы не используете стандартные возможности MVD по записи в базу? Установите в свойствах Action = [СОХРАНИТЬ ЗАПИСЬ], проверки перед записью разместите в OnClick (для прерывания сохранения установите Cancel := true) , а действия после записи - в OnAfterClick.
У вас какая СУБД? В SQLite для хранения логического значения используется поле Integer
integer не принимает хоть с ковычками хоть без
string принимает и даже записывает в базу, но тут же выдает ошибку
вот так все работает
procedure Form1_Button3_OnClick (Sender: TObject; var Cancel: boolean);
var
s: string = BoolToStr(form1.CheckBox3.Checked);
begin
SQLEXecute('INSERT INTO c (c) VALUES ("'+s+'")');
end
но только в отдельном проекте
если применяю у себя то получаю ошибку
при этом в таблице записи создаются
Дмитрий помогите
procedure frmReceivinOgEquipment_bOkCompany_OnClick (Sender: TObject; var Cancel: boolean);
var tTypeKC : string = IntToStr(frmReceivinOgEquipment.cbTCK.DbItemID);
tNameCompany : string = IntToStr(frmReceivinOgEquipment.cbNameCompany.DbItemID);
tNameTypeOfEquipment : string = IntToStr(frmReceivinOgEquipment.cbNameTypeOfEquipment.DbItemID);
tNameManufacturer : string = IntToStr(frmReceivinOgEquipment.cbNameManufacturer.DbItemID);
tDate : string = FormatDateTime('yyyy-mm-dd',frmReceivinOgEquipment.dtDateInServise.DateTime);
tCompanyOrApp : string = IntToStr(frmReceivinOgEquipment.cbnameclCompanyOrApp.DbItemID);
tStatusName : string = IntToStr(frmReceivinOgEquipment.cbStatusName.DbItemID);
tCount : string = frmNewApplication.RecordCount.Text;
sOnlyDiagnostic: string = BoolToStr(frmReceivinOgEquipment.cbOnlyDiagnostic.Checked);
sWarranty: string = BoolToStr(frmReceivinOgEquipment.cbWarranty.Checked);
begin
//проверка на заполнение полей
if (tTypeKC='-1') then ShowHint(frmReceivinOgEquipment.cbTCK, 'данное поле обязательное для заполнения ')else
if (tDate='-1') then ShowHint(frmReceivinOgEquipment.dtDateInServise, 'данное поле обязательное для заполнения ')else
if (tNameCompany='-1') then ShowHint(frmReceivinOgEquipment.cbNameCompany, 'данное поле обязательное для заполнения ')else
if (tNameTypeOfEquipment='-1') then ShowHint(frmReceivinOgEquipment.cbNameTypeOfEquipment, 'данное поле обязательное для заполнения ')else
if (tNameManufacturer='-1') then ShowHint(frmReceivinOgEquipment.cbNameManufacturer, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.eModel.Text='') then ShowHint(frmReceivinOgEquipment.eModel, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.eSerialNamber.Text='') then ShowHint(frmReceivinOgEquipment.eSerialNamber, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.eEquipment.Text='') then ShowHint(frmReceivinOgEquipment.eEquipment, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.mDescriptionATCsWords.Text='') then ShowHint(frmReceivinOgEquipment.mDescriptionATCsWords, 'данное поле обязательное для заполнения ')else
if (frmReceivinOgEquipment.mExternalStatus.Text='') then ShowHint(frmReceivinOgEquipment.mExternalStatus, 'данное поле обязательное для заполнения ')else
begin
// запись в таблицы базы данных
SQLExecute('INSERT INTO servise (dateInServise, id_status, id_Company, id_TypeOfEquipment, id_manufacturer, model, serialNamber, equipment, externalStatus, descriptionATCsWords, id_clCompanyOrApp, record_count, Warranty, OnlyDiiagnostics) VALUES ("'+tDate+'", "'+tStatusName+'", "'+tNameCompany+'", "'+ tNameTypeOfEquipment + '", "'+tNameManufacturer+'", "'+frmReceivinOgEquipment.eModel.Text+'", "'+frmReceivinOgEquipment.eSerialNamber.Text+ '", "'+frmReceivinOgEquipment.eEquipment.Text+ '", "'+ frmReceivinOgEquipment.mDescriptionATCsWords.Text+ '", "'+ frmReceivinOgEquipment.mExternalStatus.Text+ '", "'+tCompanyOrApp+'", "'+tCount+'", "'+sWarranty+'", "'+sOnlyDiagnostic+'")');
// обновление таблицы данных главной формы
frmServiceCen.tgList.dbUpdate;
frmReceivinOgEquipment.RecordCount.Text := IntToStr(GetNewRecordCount('servise'));
//закрытие формы
frmReceivinOgEquipment.Close;
end;
end;
в чем причина?
все ))) нашел проблему - запись счетчика нарушил.... резервные копии рулят )))
My Visual Database → Russian → значение чекбокс
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi