2013-08-12 2 views
0

Я пробовал другой код.Дополнительная информация: Недопустимый литой от 'Int32' до 'DateTime'

это все коды, которые я использую ...

Imports System.Data 
Imports System.Data.OleDb 
Imports System.Data.Odbc 
Imports System.Data.DataTable 
Public Class Form1 

Dim provider As String 
Dim dataFile As String 
Dim connString As String 
Dim addstring As String 
Dim cnn As OleDbConnection = New OleDbConnection 
Dim ds As DataSet = New DataSet 
Dim da As OleDbDataAdapter 
Dim tables As DataTableCollection = ds.Tables 
Dim cmd As New OleDb.OleDbCommand 
Dim dr As System.Data.OleDb.OleDbDataReader 


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    t_date.Text = Today 

    provider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" 
    dataFile = "C:\Users\hp-2\Documents\Visual Studio 2012\Projects\Delta\Delta.mdb" 

    connString = provider & dataFile 
    cnn.ConnectionString = connString 
    da = New OleDbDataAdapter("Select Customer_Name, Job, Amount from [Transaction] 
    where Trans_date = Date()", cnn) 
    da.Fill(ds, "Transaction") 

    Dim view1 As New DataView(tables(0)) 
    Dim source1 As New BindingSource() 
    source1.DataSource = view1 
    showdata.DataSource = view1 
    showdata.Refresh() 
    cnn.Close() 
End Sub 

Private Sub btmclose_Click(sender As Object, e As EventArgs) Handles btmclose.Click 
    Me.Close() 
End Sub 

Private Sub C_job_SelectedIndexChanged(sender As Object, e As EventArgs) Handles C_job.SelectedIndexChanged 
    Dim selected As String = C_job.SelectedItem.ToString() 
    If selected = "Internet" Then 
     t_amount.Text = "20" 
     php.Visible = True 
    ElseIf selected = "Games" Then 
     t_amount.Text = "10" 
     php.Visible = True 
    ElseIf selected = "Print (short)" Then 
     t_amount.Text = "1" 
     php.Visible = True 
    ElseIf selected = "Print (long)" Then 
     t_amount.Text = "2" 
     php.Visible = True 
    ElseIf t_amount.Text = "" Then 
     php.Visible = False 
    End If 
End Sub 

Private Sub btnadd_Click(sender As Object, e As EventArgs) Handles btnadd.Click 

    provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
    dataFile = "C:\Users\hp-2\Documents\Visual Studio 2012\Projects\Delta\Delta.mdb" 

    connString = provider & dataFile 
    cnn.ConnectionString = connString 
    cnn.Open() 

    cmd.Connection = cnn 
    addstring = "insert into Transaction (Customer_Name, Job, Trans_date, Amount) " & _ 
     " values (@cname, @job, @tdate, @amount)" 
    Using conn As New OleDbConnection(connString) 
     Using comm As New OleDbCommand() 
      With comm 
       .Connection = conn 
       .CommandType = CommandType.Text 
       .CommandText = addstring 
       .Parameters.AddWithValue("@cname", C_name.Text) 
       .Parameters.AddWithValue("@job", C_job.Text) 
       .Parameters.AddWithValue("@date", Convert.ToDateTime(t_date.Text.Length)) 
       .Parameters.AddWithValue("@amount", Convert.ToInt64(t_amount.Text)) 
      End With 

      Try 
       conn.Open() 
       comm.ExecuteNonQuery() 
      Catch ex As Exception 

      End Try 
     End Using 
    End Using 
    cmd.ExecuteNonQuery() 
    cnn.Close() 
End Sub 

End Class 

ОШИБКА:

Additional information: Invalid cast from 'Int32' to 'DateTime'.

мое имя таблицы транзакций (TRANSACTION_ID, CUSTOMER_NAME, работы, t_date, количество) -> Transaction_Id является автоматической установкой в ​​ms-доступе.

Так что textbox в моем проекте являются:

  • CUSTOMER_NAME,
  • Сумма,
  • t_date

И выпадающий являются:

  • работа
+0

Я предполагаю, что это является продолжением до [этот вопрос] (http://stackoverflow.com/questions/ 18181772/там-это-всегда-ан-ошибок Dont-ноу-почему)? Если это так, вы должны * отредактировать * свой существующий вопрос, чтобы добавить дополнительную информацию, ** не ** создал новый вопрос (особенно здесь, где вы «ссылаетесь» на исходный вопрос неявно) –

+0

thnks для info..didn ' t знаю, что .. в следующий раз – hPys

ответ

0

это линия вызывает исключение:

Convert.ToDateTime(t_date.Text.Length) 

вероятно, это должно быть:

Convert.ToDateTime(t_date.Text) 
+0

well t_date.Text.Length - это combobox – hPys

+0

Вы имели в виду t_date.SelectedValue? – Rex

+0

Я изменил Convert.ToDateTime (t_date.Text.Length) на Convert.ToDateTime (t_date.SelectedText), новая ошибка Дополнительная информация: String не была признана действительной DateTime. – hPys

1

Ваш вопрос, кажется, на этой линии:

Convert.ToDateTime(t_date.Text.Length) 

Вы пытаетесь преобразуя длина текстового поля (Int32) до DateTime, который не будет работать.

Вы, вероятно, просто хочу сделать:

Convert.ToDateTime(t_date.Text) 

Ссылка & Образцы: MSDN Convert.ToDateTime