当我想在我的 Access 数据库中保存一行时,我遇到了问题。当我想在没有检查 Herinneringsmail 的情况下保存它时,它可以工作,当我检查 Herinneringsmail 时,它不起作用。所以错误出现在下面的“If(ckbHerinneringsmail.Checked){...}”中。我在标准表达式中得到 OledbException 数据类型不匹配。当我想插入行并且想用 Herinneringsmail 更新行时,我得到了异常。请帮忙。
private void btnOpslaan_Click(object sender, EventArgs e)
{
String status = cmbStatus.SelectedItem.ToString();
String naam = txtNaam.Text;
int merk = Convert.ToInt32(cmdMerken.SelectedValue);
DateTime startdatumCamp = Convert.ToDateTime(dtpStartCamp.Text);
DateTime einddatumCamp = Convert.ToDateTime(dtpEinddatCamp.Text);
Boolean titel = ckbTitel.Checked;
Boolean link = ckbLink.Checked;
Boolean teasertekst = ckbTeasertekst.Checked;
Boolean inhoudsopgave = ckbInhoudsopgave.Checked;
Boolean praktischeInfo = ckbPraktischeInfo.Checked;
String verzenduur = txtVerzenduur.Text;
DateTime verzenddatum = Convert.ToDateTime(dtpVerzenddatum.Text);
int frequentie = Convert.ToInt16(txtFrequentie.Text);
DateTime startdatum = Convert.ToDateTime(dtpStartdatum.Text);
DateTime einddatum = Convert.ToDateTime(dtpEinddatum.Text);
Boolean herinneringsmail = ckbHerinneringsmail.Checked;
if (ckbHerinneringsmail.Checked)
{
Boolean geklikt = ckbGeklikt.Checked;
Boolean nietGeklikt = ckbNietGeklikt.Checked;
int atlDagen = Convert.ToInt32(txtAtlDagen.Text);
}
if (indexCamp == 0 || statusCamp == "kopieren")
{
if (ckbHerinneringsmail.Checked)
query = "Insert into [E-mailcampagne] ([Status], [Naam], [MerkID],[StartdatumCamp], [EinddatumCamp], [Titel], [Link], [Teasertekst], [Inhoudsopgave], [PraktischeInfo], [Verzenduur], [Verzenddatum], [Frequentie], [StartdatumOpl], [EinddatumOpl], [Herinneringsmail], [Geklikt], [NietGeklikt], [Aantal dagen], [Commerciële Coördinator]) values(@status, @naam, @merk, @startdatumCamp, @einddatumCamp, @titel, @link, @teasertekst, @inhoudsopgave, @praktischeInfo, @verzenduur, @verzenddatum, @frequentie, @startdatum, @einddatum, @herinneringsmail, @geklikt, @nietGeklikt, @atlDagen, @commID)";
else
query = "Insert into [E-mailcampagne] ([Status], [Naam], [MerkID], [StartdatumCamp], [EinddatumCamp], [Titel], [Link], [Teasertekst], [Inhoudsopgave], [PraktischeInfo], [Verzenduur], [Verzenddatum], [Frequentie], [StartdatumOpl], [EinddatumOpl], [Herinneringsmail], [Commerciële Coördinator]) values(@status, @naam, @merk, @startdatumCamp, @einddatumCamp, @titel, @link, @teasertekst, @inhoudsopgave, @praktischeInfo, @verzenduur, @verzenddatum, @frequentie, @startdatum, @einddatum, @herinneringsmail, @commID)";
}
else
{
if (ckbHerinneringsmail.Checked)
query = "Update [E-mailcampagne] set [Status] = @status, [Naam] = @naam, [MerkID] = @merk, [StartdatumCamp] = @startdatumCamp, [EinddatumCamp] = @einddautmCamp, [Titel] = @titel, [Link] = @link, [Teasertekst] = @teasertekst, [Inhoudsopgave] = @inhoudsopgave, [PraktischeInfo] = @praktischeInfo, [Verzenduur] = @verzenduur, [Verzenddatum] = @verzenddatum, [Frequentie] = @frequentie, [StartdatumOpl] = @startdatum, [EinddatumOpl] = @einddatum, [Herinneringsmail] = @herinneringsmail, [Geklikt] = @geklikt, [NietGeklikt] = @nietGeklikt, [Aantal dagen] = @altDagen, [Commerciële Coördinator] = @commID where [CampagneID] = @indexCamp";
else
query = "Update [E-mailcampagne] set [Status] = @status, [Naam] = @naam, [MerkID] = @merk, [StartdatumCamp] = @startdatumCamp, [EinddatumCamp] = @einddatumCamp, [Titel] = @titel, [Link] = @link, [Teasertekst] = @teasertekst, [Inhoudsopgave] = @inhoudsopgave, [PraktischeInfo] = @praktischeInfo, [Verzenduur] = @verzenduur, [Verzenddatum] = @verzenddatum, [Frequentie] = @frequentie, [StartdatumOpl] = @startdatum, [EinddatumOpl] = @einddatum, [Herinneringsmail] = @herinneringsmail, [Commerciële Coördinator] = @commID where [CampagneID] = @indexCamp";
}
using (OleDbConnection conn = new OleDbConnection(connstring))
{
OleDbCommand com = new OleDbCommand(query, conn);
com.Parameters.Add("@status", OleDbType.VarChar, 15, "[Status]").Value = cmbStatus.SelectedItem.ToString();
com.Parameters.Add("@naam", OleDbType.VarChar, 50, "[Naam]").Value = txtNaam.Text;
com.Parameters.Add("@merk", OleDbType.Integer, 3, "[MerkID]").Value = Convert.ToInt32(cmdMerken.SelectedValue);
com.Parameters.Add("@startdatumCamp", OleDbType.Date, 10, "[StartdatumCamp]").Value = Convert.ToDateTime(dtpStartCamp.Text);
com.Parameters.Add("@einddatumCamp", OleDbType.Date, 10, "[EinddatumCamp]").Value = Convert.ToDateTime(dtpEinddatCamp.Text);
com.Parameters.Add("@titel", OleDbType.Boolean, 1, "[Titel]").Value = ckbTitel.Checked;
com.Parameters.Add("@link", OleDbType.Boolean, 1, "[Link]").Value = ckbLink.Checked;
com.Parameters.Add("@teasertekst", OleDbType.Boolean, 1, "[Teasertekst]").Value = ckbTeasertekst.Checked;
com.Parameters.Add("@inhoudsopgave", OleDbType.Boolean, 1, "[Inhoudsopgave]").Value = ckbInhoudsopgave.Checked;
com.Parameters.Add("@praktischeInfo", OleDbType.Boolean, 1, "[PraktischeInfo]").Value = ckbPraktischeInfo.Checked;
com.Parameters.Add("@verzenduur", OleDbType.VarChar, 5, "[Verzenduur]").Value = txtVerzenduur.Text;
com.Parameters.Add("@verzenddatum", OleDbType.Date, 10, "[Verzenddatum]").Value = Convert.ToDateTime(dtpVerzenddatum.Text);
com.Parameters.Add("@frequentie", OleDbType.Integer, 2, "[Frequentie]").Value = Convert.ToInt32(txtFrequentie.Text);
com.Parameters.Add("@startdatum", OleDbType.Date, 10, "[Startdatum]").Value = Convert.ToDateTime(dtpStartdatum.Text);
com.Parameters.Add("@einddatum", OleDbType.Date, 10, "[Einddatum]").Value = Convert.ToDateTime(dtpEinddatum.Text);
com.Parameters.Add("@herinneringsmail", OleDbType.Boolean, 1, "[Herinneringsmail]").Value = ckbHerinneringsmail.Checked;
com.Parameters.Add("@commID", OleDbType.VarChar, 50, "[Commerciële coördinator]").Value = commID;
if (ckbHerinneringsmail.Checked)
{
com.Parameters.Add("@geklikt", OleDbType.Boolean, 1, "[Geklikt]").Value = ckbGeklikt.Checked;
com.Parameters.Add("@nietGeklikt", OleDbType.Boolean, 1, "[NietGeklikt]").Value = ckbNietGeklikt.Checked;
com.Parameters.Add("@atlDagen", OleDbType.Integer, 2, "[Aantal dagen]").Value = Convert.ToInt32(txtAtlDagen.Text);
}
if (indexCamp != 0 && statusCamp == "wijzigen")
com.Parameters.Add("@indexCamp", OleDbType.Integer, 2).Value = indexCamp;
conn.Open();
com.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Succesvol opgeslagen");
this.Close();
}
}