|
Hi
I have trouble with ADO.Net. I don't understand when to use what. I'm using Visual Basic in Visual Studio 2005.
In my program I have a dataadapter-,dataset and a bindingsource control.
When I try to use the code
Dim cnNwind As New OleDb.OleDbConnection(Me.FilmTableAdapter.Connection.ConnectionString)
Dim cmOrder As OleDb.OleDbCommand = Nothing
Dim strSQL As String = "DELETE FROM " + table + " WHERE ID = " + cbo.SelectedValue.ToString
cmOrder = New OleDb.OleDbCommand(strSQL, cnNwind)
cmOrder.ExecuteNonQuery()
nothing happens, the record isn't deleted.
I have also tried using the adapters Delete method
Me.FilmTableAdapter.Delete(cbo.SelectedValue.ToString)
Me.FilmTableAdapter.Update(Me.FilmerDataSet)
and nothing happens.
I don't know if I had to use the update method, but it didn't mattered if I did or didn't.
I have also tried to add parameters when I used the Delete method, but it didn't helped.
cmOrder.Parameters.AddWithValue("@Original_ID", cbo.SelectedValue.ToString)
Me.FilmTableAdapter.Delete(cbo.SelectedValue.ToString)
So I have know clue what to do or when I should use either of the methods to delete a record.
If there is somone who can explain when to use either of these examples, please explain that for me. And when should I use the update method, because I don't know.
And what should I do in my program to delete a record.
PLEASE HELP ME!!!!
FIA
|
|
|
|
|
you have to call cnNwind.Open() before executing a command.
Calin
|
|
|
|
|
Sorry, I didn't paste that line. I have already used the code.
cnNwind.Open()
before I used the ExecuteNonQuery or the dataapter's Delete method and it still doesn't work.
|
|
|
|
|
If the rest of the code you haven't show around these small sections is correct, the ID you're supplying to the SQL DELETE statement isn't matching any records.
|
|
|
|
|
I'll give it another try.
I have in my program a dataadapter, a dataset and a databindingsource control.
I have tried the code below
Sub deleteRecords(ByVal cbo As ComboBox, ByVal table As String)
Dim cnNwind As New OleDb.OleDbConnection (Me.FilmTableAdapter.Connection.ConnectionString)
Dim cmOrder As OleDb.OleDbCommand = Nothing
Dim strSQL As String = "DELETE FROM " + table + " WHERE ID = " + cbo.SelectedValue.ToString
cmOrder = New OleDb.OleDbCommand(strSQL, cnNwind)
'cmOrder.Parameters.AddWithValue("@Original_ID", cbo.SelectedValue.ToString)
cnNwind.Open()
cmOrder.ExecuteNonQuery()
cnNwind.Close()
End Sub
and nothing happens. It doesn't matter if I add the parameters or not.
And the ID is in the database.
I have also tried the dataadapters Delete method
Sub deleteRecords(ByVal cbo As ComboBox, ByVal table As String)
Dim cnNwind As New OleDb.OleDbConnection(Me.FilmTableAdapter.Connection.ConnectionString)
Dim cmOrder As OleDb.OleDbCommand = Nothing
cnNwind.Open()
Me.FilmTableAdapter.Delete(cbo.SelectedValue.ToString)
Me.FilmTableAdapter.Update(Me.FilmerDataSet)
cnNwind.Close()
End Sub
but nothing happens here either.
I don't know when to use either of these examples or when to add the parameters or use the Update method. And now when neither of them working with parameters and Update or not, I need some explanation on when to use either of the examples I have and when to use parameter or Update. And of course what to do in my program.
I hope this code explains my trouble more.
|
|
|
|
|
And have you checked the value of cbo.SelectedValue when you put it in the SQL string?? Does this value actually exist in the table?
|
|
|
|
|
Hi again
Yes the value exists, so I have no idea why it's not working. Can it maybe be that the combobox is bound to fields in the database. I have also changed the disabled mode in the Access database.
|
|
|
|
|
Wait a minute. You're using an Access database?? Is this database part of your project? If so, then the code might actually be working. If your database is in the project folder and you compile the program, the database file (*.mdb) will be copied to the bin folder of your project. Now, every time you compile and run your app the database is being copied to the bin folder AGAIN, overwriting any changes you've made since the database was first added to the project.
|
|
|
|
|
Yes, the database is included. Doesn't it have to be if I'm using dataadapter, dataset controls and bound conrols? I tried to exclude the database, but then I got an InvalidOperationException that said it couldn't find the database. What do I have to do now?
|
|
|
|
|
fiaolle wrote: Doesn't it have to be if I'm using dataadapter, dataset controls and bound conrols?
If you've used the dataset designer, yes, it does.
Put the database back in the proejct like you had it. You just need to understand that any changes you make to the database will be undone because the database is being recopied to the Release or Debug folders every time you run it. Your code is making changes to that copy of the database, not the copy you see in the project.
|
|
|
|
|
I don't understand the point of that. Because when I delete an item in the comboBox I want the item to be removed from the comboBox. I really don't know how to do that the easiest way. But should I remove my controls and my database and connect to my database another way. Are there no connection controls in Visual Studio 2005, because I didn't get one when I added a new DataSource.
|
|
|
|
|
fiaolle wrote: Because when I delete an item in the comboBox I want the item to be removed from the comboBox.
I'm assuming you databound the combo to a dataset or datatable. In that case, you don't delete anything from the Combo. You delete it from the data, then either rebind the Combo, or refresh the datasource that the combo is bound to. This will automatically take the item out of the list in the Combo.
|
|
|
|
|
I'm using the dataadapter to update the dataset and then I refresh the combobox. The combobox is bound to FilmerDataSet.
I have tried this
Sub deleteRecords(ByVal cbo As ComboBox, ByVal table As String)
Me.FilmTableAdapter.DeleteQuery(cbo.SelectedValue.ToString)
Me.FilmTableAdapter.Update(Me.FilmerDataSet)
cbo.Refresh()
End Sub
and this
Sub deleteRecords(ByVal cbo As ComboBox, ByVal table As String)
Dim cnNwind As New OleDb.OleDbConnection (Me.FilmTableAdapter.Connection.ConnectionString)
Dim cmOrder As OleDb.OleDbCommand = Nothing
Dim strSQL As String = "DELETE FROM " + table + " WHERE ID = " + cbo.SelectedValue.ToString
cmOrder = New OleDb.OleDbCommand(strSQL, cnNwind)
'cmOrder.Parameters.AddWithValue("@Original_ID",cbo.SelectedValue.ToString)
cnNwind.Open()
cmOrder.ExecuteNonQuery()
Me.FilmTableAdapter.Update(Me.FilmerDataSet)
cnNwind.Close()
cbo.Refresh()
End Sub and neither works.
Also when do I have to add parameters, that line is a comment.
|
|
|
|
|
OK. It's obvious that you're really, really confused and a beginner at programming in general. You're passing ComboBox's and table names when you don't need either. All you need to pass is the ID selected in the ComboBox. The method you call to delete the record should already know which table it's dealing with. You also don't know how DataAdapters work and your SQL also needs work to support parameters. Describing all of this is way beyond the focus of a forum post and would take a large amount of space.
I couldn't tell you how to fix this because, really, it would involved scraping the code you have entirely, and starting over from scratch. I seriously recommend picking up a beginners book on VB.NET and ADO.NET.
|
|
|
|
|
You don't have to be insolent. I have more than one table and combobox, which are doing the same thing. I know I have trouble understanding ADO.NET, that is why I ask questions. Because I don't see the differences and understand wich method I should use in the books I have read. I'm greatefull for the answers you gave me, but now I have to ask somewhere else to answer my questions.
|
|
|
|
|
I'm trying to write a script that will give a user two options (map network drive, or run SMS) then call a script based on their response. I tried using InputBox but am really looking for a way to have like two buttons to click or a drop down with no typing. Is it possible? Any suggestions\help is appreciated.
Backround (in case your wondering) on the request, we have to remove rights from our help desk staff, but they have to be able to map drives and SMS remote control pc's using a !bang account. Within our call logging software I've created a "run as" button that will be the basis of this request. I welcome any suggestions.
Jay
|
|
|
|
|
JayMar8 wrote: I tried using InputBox but am really looking for a way to have like two buttons to click or a drop down with no typing. Is it possible?
Create a form, drop two buttons on it. In the Click events of those buttons, you launch whatever command line you need to using the Process class.
Either you really need to pick up a beginner's book on VB.NET, or you've left out an important detail that is stopping you from writing this project.
If you're put a button in your call logging software, what's stopp you from putting two more buttons, one for running each application?
|
|
|
|
|
"If you're put a button in your call logging software, what's stopp you from putting two more buttons, one for running each application?"
The reason is the available space on the call logging gui is limited. We may be adding several options to the custom form you suggested I create, so I'd rather it call scripts based on user input. Thanks for you suggestion, I'll see if I can figure out how to create a form. And yes, I do need to pick up a beginners book...
|
|
|
|
|
i want to know the use of timer in vb 6 to create various animated pictures.
|
|
|
|
|
First of all, this isn't a question but a statement. This looks like an order.
To answer your question: I don't know if this is the same in VB6, but a timer has a Tick event. The timer also has an interval that can be set. In VB6, if the interval is 0, the timer is disabled. Showing animations with a timer isn't a very good idea, because it uses a lot of CPU, but it can be done. Also, I have no idea where you are storing the pictures used in this animations. I will use images in a folder in this example.
Public ImgIndex as Integer = 0
Private Sub Timer1_Tick(...) Handles Timer1.Tick
ImageBox1.LoadPicture(Folder & "\Image" & ImgIndex.ToString & ".gif") 'LoadPicture is no longer being supported in higher versions of VB
ImgIndex+=1
End Sub
Yet, this code is far from perfect. When the animation is at it's final image, it will request an image that does not exist. In my example, you could solve this by counting the number of files in a folder, but it's risky.
Hope this helped you,
Zaegra
Motivation is the key to software development.
|
|
|
|
|
I Format datagridview column as currency but when I add data with this code
reader = OleDbCommand1.ExecuteReader()
Dim arr(6) As String
flag = False
DataGridView1.Rows.Clear()
'DataGridView1.ClearSelection()
While reader.Read()
arr(0) = reader.Item("obekt_name")
arr(1) = reader.Item("material")
arr(2) = reader.Item("edin_cena")
arr(3) = reader.Item("kolichestvo")
arr(4) = reader.Item("data_zakup")
arr(5) = reader.Item("cena")
DataGridView1.Rows.Add(arr)
flag = True
End While
not see currency sign, I want see $10000, but see only number 10000. I add data in MS access database using OLE cennection
|
|
|
|
|
um...
arr(n) = Format(reader.Item("myItem"),"$0.00")
I don't speak Idiot - please talk slowly and clearly
I don't know what all the fuss is about with America getting it's first black president. Zimbabwe's had one for years and he's sh*t. - Percy Drake , Shrewsbury
|
|
|
|
|
Thank You very much that work
|
|
|
|
|
I know in vb.net the TYPE is changed to Structure in vb.net
If you need to create new Structure in design time, you should add a module to your project and start building the structure you want.
Suppose you have this Structure
Public Structure strut_Employee
Public ID as Integer
Public FullName as string
End Structure
If you want to get reference to this type, you should code Dim Mytype as struct_Employee
I want to create structure dynamically.
RetStruct = CreateStruct("ID","Integer","FullName","String")
' The parameter are structure components
' CreateStruct should create the structure and return the created structure to RetStruct variable which is defined as structure
' Then I want the ability to use the below
RetStruct.ID = 1000
RerStruct.FullName = "Samir"
Can that be done? Either in vb6 or vb.net
TIA
Samir R. Ibrahim
|
|
|
|
|
In VB6, no, not at all.
In VB.NET, it's possible, but very rarely ever used. I suggest creating a DataTable instead.
Creating a structure at runtime is FAR more difficult that it sounds. You actually have to create the structure using CodeDom, treating it as if you were writing a VB.NET compiler, emitting MSIL code. A structure would be inefficient in this case because you can't reference it anywhere in your code, nor use any of it's members without further using Reflection, which is notoriously slow. Why? Because your structure doesn't exist at compile-time!
|
|
|
|