2010-10-03 2 views
1

я создал программу, которая добавит и возвращает оборудование, моя проблема в том, его, потому что мой стол заимствования и мой стол возврата оборудования в одной таблицы only..representing этих полейобновление полей в Microsoft Access 2000 THRU Visual Basic

"productnumber"

"PRODUCTNAME"

"dateborrowed"

"datereturned"

«бо rrowername»

„Статус“

то, что я хочу сделать здесь, когда пользователь возвращает оборудование, введя одни и те же данные на полях будут делать ошибки на моем database..especially на моем productnumber, потому что это мой первичный ключ, поэтому я решил иметь сетку данных в моей форме оборудования для возврата, поэтому, если пользователь вернет оборудование, все, что я сделаю, это обновить поле datereturned в моей базе данных .guys? вы можете мне помочь с кодами?

+0

Недостаточная информация для ответа –

+0

скажите, чего не хватает в моем заявлении? – RedKing

+1

Думаю, вам нужно сделать еще несколько работ по дизайну стола. Если номер продукта является первичным ключом, тогда он может быть только «заимствован» и «возвращен» один раз ... –

ответ

2

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

Запрос на обновление datereturned:

str = "UPDATE 'Your Table Name' SET datereturned = " & now ' This is your update query. 

Первое, что нужно сделать, это создать соединение базы данных доступом:

 Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\Tecnical Stu"& _ 
"dy\Complete_Code\Ch08\data\NorthWind.mdb" 
     Dim dbConnection As System.Data.IDbConnection = New System.Data.OleDb.OleDbConnection(connectionString) 

Найдено в:

http://p2p.wrox.com/ado-net/28703-how-vbulletin-net-connect-access-database.html

Следующая вы должны выполнить обновление:

dbConnection .Open() 
str = "UPDATE 'Your Table Name' SET datereturned = " & now ' This is your update query. 
'string stores the command and CInt is used to convert number to string 
cmd = New OleDbCommand(str, cn) 
icount = cmd.ExecuteNonQuery 

Это класс, который позволит вам легко и просто выполнять взаимодействие.

Imports System.Data.OleDb 
Public Class Form1 Inherits System.Windows.Forms.Form 
Dim cn As OleDbConnection 
Dim cmd As OleDbCommand 
Dim dr As OleDbDataReader 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e as _ 
System.EventArgs) Handles MyBase.Load 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As_ 
System.EventArgs) Handles Button1.Click 
Try 
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;_ 
Data Source=C:\emp.mdb;") 
'provider to be used when working with access database 
cn.Open() 
cmd = New OleDbCommand("select * from table1", cn) 
dr = cmd.ExecuteReader 
While dr.Read() 
TextBox1.Text = dr(0) 
TextBox2.Text = dr(1) 
TextBox3.Text = dr(2) 
' loading data into TextBoxes by column index 
End While 
Catch 
End Try 
dr.Close() 
cn.Close() 
End Sub 
End Class 
When you run the code and click the Button, records from Table1 of the Emp database will be displayed in the TextBoxes. 

Retrieving records with a Console Application 

Imports System.Data.OleDb 
Imports System.Console 
Module Module1 

Dim cn As OleDbConnection 
Dim cmd As OleDbCommand 
Dim dr As OleDbDataReader 

Sub Main() 
Try 
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\emp.mdb;_ 
Persist Security Info=False") 
cn.Open() 
cmd = New OleDbCommand("select * from table1", cn) 
dr = cmd.ExecuteReader 
While dr.Read() 
WriteLine(dr(0)) 
WriteLine(dr(1)) 
WriteLine(dr(2)) 
'writing to console 
End While 
Catch 
End Try 
dr.Close() 
cn.Close() 
End Sub 

End Module 
Code for Inserting a Record 

Imports System.Data.OleDb 
Public Class Form2 Inherits System.Windows.Forms.Form 
Dim cn As OleDbConnection 
Dim cmd As OleDbCommand 
Dim dr As OleDbDataReader 
Dim icount As Integer 
Dim str As String 

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As_ 
System.EventArgs) Handles MyBase.Load 

End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As_ 
System.EventArgs) Handles Button2.Click 
Try 
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\emp.mdb;") 
cn.Open() 
str = "insert into table1 values(" & CInt(TextBox1.Text) & ",'" & TextBox2.Text & "','" &_ 
TextBox3.Text & "')" 
'string stores the command and CInt is used to convert number to string 
cmd = New OleDbCommand(str, cn) 
icount = cmd.ExecuteNonQuery 
MessageBox.Show(icount) 
'displays number of records inserted 
Catch 
End Try 
cn.Close() 
End Sub 
End Class 

Найдено в:

http://www.startvbdotnet.com/ado/msaccess.aspx

+0

Должен ли я создать еще один модуль для этого кода? длинный? – RedKing

+0

Обычно я создаю класс, который обрабатывает все взаимодействие с базой данных, но вы, возможно, могли бы выполнить простые обновления, используя суб. –

+0

Что происходит с обратными окнами вокруг имен таблиц? Это неправда Jet/ACE SQL, хотя, возможно, ваш уровень интерфейса данных удалит их перед отправкой в ​​Jet/ACE. Я бы, конечно, оставил их, если бы платформа оригинального опроса была фактически VBA, а не VB. –

1

Вы должны разделить продукт и брать/возвращаемые данные в двух таблицах:

product: 
"productnumber" 
"productname" 

borrowed: 
borrowedID (use a simple autonumber) 
productnumber (foreign key linked to productnumber in the product table) 
"dateborrowed" 
"datereturned" 
"status" 
borrowerID (foreign key linked to borrower table) 

треть таблицы для заемщиков/клиентов будет также быть в порядке

borrowers: 
borrowerID 
"borrowername" 
+0

Зачем их разделять, если datereturned является единственным полем и сразу же относится к исходной таблице? –

Смежные вопросы