|
We can't answer the question because you haven't said anything about how the cash drawer is connected to the machine, nor what commands to send, or anything else we need to know to give you a useful answer. Well, other than telling you what you need to do would be covered in the manual for the cash drawer...
|
|
|
|
|
Dave Kreskowiak wrote: Well, other than telling you what you need to do would be covered in the manual for the cash drawer...
Which is what we were bound to say anyhow....
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Oh, crap! Did I give away too much information??
I don't know...It seem'd like I was over stating stating the obvious. Or was I being too dramatic? My performance wasn't too "over the top", was it? What do you think?
|
|
|
|
|
*grin*
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
The truth is that the system should be able to open any cash drawer nommatter how they are connected(either direct to a computer or through a receipt).
I will look for the commands for all the drawers and then define them or allow the users to define the commands to open their drawer.
I need the source code that sends any commands.
I need a step by step approach here. help me.
Thanks
Fear The Lord
|
|
|
|
|
You have another problem. Not all cash drawers work on a Serial port. Some are USB, others are custom Parallel implementations, and I've seen a couple on custom interfaces.
There's n standard to follow here. You're going to have to write plugin modules to support the type of interface that the draw is using. You might want to limit your app's support to just serial and usb drawers.
imlambo wrote: I need the source code that sends any commands.
To support Serial drawers, all you have to do is Google for "VB.NET Serial Port" and you'll find hundreds of examples.
imlambo wrote: I need a step by step approach here.
If you're asking this question, you're in serious trouble with this project.
|
|
|
|
|
Thanks very much for the advice.
I have decided to follow the following approach:
A) For Printer Driven Cash Drawers:
I will give an interface to define Printer settings as follows:
1)Printer Ports:Lists all Printer Ports on Computer and user selects.
2)Drawer Opening commands:to open the specific Drawer.eg.
I have googled the following code for use: To send commands to the Printer(EPSON) To Open the drawer.
Public Sub open_cashdrawer()
Dim intFileNo As Integer = FreeFile()
FileOpen(1, "c:\escapes.txt", OpenMode.Output)
PrintLine(1, Chr(27) & "p" & Chr(0) & Chr(25) & Chr(250))
FileClose(1)
Shell("print /d:lpt1 c:\escapes.txt", vbNormalFocus)
End Sub
I will put this code before a receipt is printed.
My problem is that I do not have hardware and I am trying to design a system which should fit all Printers hence giving users to select ports and commands to open drawers.
I need to go to the client with a working solution and I need assurance whether this will work.
B)Connected Serially and Parralell.
Wish to follow when done with above.
thanks in advance
Fear The Lord
|
|
|
|
|
Does your cash register have a large lever? I've heard that reuse helps to leverage your code.
-- modified at 12:58 Friday 7th September, 2007
|
|
|
|
|
I have One Datagrid with a dataset that calls two tables - the First table is the table the user will be editing - which edited on the grid or in a textbox - as the user edits the grid - that info is automatically updated onto the database - My problem is - when user goes to the nested table the application is still looking for parameters to update the database - which is causing errors - how will I prevent this from happening on the second table here his my code snippent - I know it has to have something to do with MyDataset.Tables(1) but I can not get the syntax down for this at all.
'frmload<br />
Dim command1 As New SqlCommand("Select * FROM LateOrders_Header_view", cnn1)<br />
Dim command2 As New SqlCommand("Select * from LateOrders_Line_view", cnn1)<br />
'Dim SqlReader As SqlDataReader<br />
Try<br />
cnn1.Open()<br />
<br />
'Debug.WriteLine(cnn1.ConnectionString)<br />
Dim dt As New DataTable("LateOrders_Header_view")<br />
dgOrderReport.DataSource = dt<br />
Dim DirAdapter As New SqlDataAdapter(command1)<br />
Dim DirAdapter2 As New SqlDataAdapter(command2)<br />
Dim dc1 As DataColumn<br />
Dim dc3 As DataColumn<br />
Dim datarelation As DataRelation<br />
<br />
MyDataSet = New DataSet<br />
MyDataSet = New DataSet<br />
DirAdapter.TableMappings.Add("table1", "LateOrders_Header_view")<br />
DirAdapter.TableMappings.Add("table2", "LateOrders_line_view")<br />
<br />
DirAdapter.Fill(MyDataSet, "LateOrders_Header_view")<br />
DirAdapter2.Fill(MyDataSet2, "LateOrders_Line_view")<br />
<br />
dc1 = MyDataSet.Tables("LateOrders_Header_view").Columns("order_no")<br />
dc3 = MyDataSet.Tables("LateOrders_Line_view").Columns("order_no")<br />
datarelation = New DataRelation("Line View", dc1, dc3)<br />
MyDataSet.Relations.Add(datarelation)<br />
'dc3.ReadOnly = True<br />
<br />
dgOrderReport.DataSource = MyDataSet.DefaultViewManager '.CreateDataView.Tables("LateOrders_Header_view").DefaultView<br />
dgOrderReport.DataMember = "LateOrders_header_view"
'This controls the grid click event - This is where I believe I need to add something to let it know that this dosent apply to the second table
How do I let it know not to do this (below) for second table.
<br />
Private Sub dgOrderReport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgOrderReport.Click<br />
Try<br />
<br />
txtReason.Text = dgOrderReport.Item(dgOrderReport.CurrentRowIndex, 4) & ""<br />
txtReason.Enabled = False<br />
chkReason.Checked = False<br />
<br />
Catch ex As Exception<br />
MessageBox.Show(ex.Message)<br />
End Try<br />
<br />
End Sub<br />
Any Ideas....
Thank You
|
|
|
|
|
This looks like a normal master/detail setup. I would suggest start by looking at some samples, like these[^].
|
|
|
|
|
Hello!
I have created a custom control, build it and added its reference in my main application...
Control apears in tool box! When i drag it on my main form (at design time)its ok but when i want to create it dynamically like: Dim myc as new
i could not find name of my custom control to create it on run!
Any clue, How can i access it dynamically?
Thanks in advance
colgateas900197
|
|
|
|
|
If its in a different namespace or assembly than teh code referencing it then do you have an imports statement for that?
|
|
|
|
|
Oh no! That was the problem!!!!
It works! Thankyou...
God bless you my friend!
colgateas900197
|
|
|
|
|
I have a problem. I have stored data in the database of particular locations. These locations have Ids .I want to use a combobox to retrieve the names of the Locatios(Towns-Selects only those in database )but save the id in the persons table. Any way to go round this?
|
|
|
|
|
create relations bxn the tables and normalize your database to make it easy otherwise.
try this code but correct the syntax
select the names from locations where id=(select id from persons)
( the only the ID will be in the combobox)
make the syntax correct.
am still a novice so hope sam1 else helps u too.
phatkin
|
|
|
|
|
I have 2 tables
Town(townId,TownName)
Persons_table(Id,Name,TownId)
I would like to use a combobox to display the TownName but the save the TownId in the Persons_table(use to use by the User)
|
|
|
|
|
make a class clsTowns with 2 variables: iid and sname
make 2 public property's in that class id and name
override tostring in the class:
public overrides tostring
return sname
then in the form get all the records from db put each record in a variable of you'r class
and add the class variable to the combobox
dim t as new clstowns
t.id=db.id
t.town=db.town
cbo.items.add(t)
then when you're user selects a item in the combobox the selecteditem contains you're variable of the type clstowns
dim t as clstowns = cbo.selecteditem
and the id can then be extracted from you clstowns variable
dim id as integer = t.id
then you can write it to the db in the persons table
this is only 1 way to do what you want there are other and perhaps better ways
hope this helps
If my help was helpfull let me know, if not let me know why.
The only way we learn is by making mistaks.
|
|
|
|
|
Thank you for your replay
One more qn
How about the cbo.valueMember and display properties any way to help
Because there are over 3000 towns
|
|
|
|
|
big country you live in
you could indeed use the displaymember and valuemember property's of the cbo but then you still need to iterate thru you're db records and add them 1 by 1
perhaps the DataSource property could help you better. You can pass any collection to this but I would have to test what it does with a datatable, never tryed it so I don't know
If my help was helpfull let me know, if not let me know why.
The only way we learn is by making mistaks.
|
|
|
|
|
to display the townname in the combobox
dim dt as datatable=nothing 'ur datatable
dim ds as dataset 'ur dataset, load the query results into this dataset
dt=ds.tables(0)
dim dr as datarow
combobox1.items.clear 'optionally clear the combobox
for each dr in dt.rows
combobox1.items.add(dr("townname").tostring
end for
Actually ur explanations is still not clear to me at all
phatkin
|
|
|
|
|
I think the other two guys are a bit off the mark.
Are you saying that you want to show a ComboBox with all of your Town names, have the user pick one of those towns and save its TownId in the Person's record?
You don't have to add each town individually. All you need to do is load the Town data into a DataTable object, then bind the ComboBox to that table. Then, when the user selects a town, you'll have to ID automatically, that you can put into the persons record:
' Get the town data into a DataTable object. I hope you
' already have the SQL done to do this.
' Bind th e Combo to the Towns DataTable object
ComboBox1.DataSource = townsData
' Tell the ComboBox to display the data in the
' TownName column of your data
ComboBox1.DisplayMember = "TownName"
' Tell the ComboBox to use the value in the
' TownId column as the value to be returned when
' the user selects an item
ComboBox1.ValueMember = "TownId"
Now, when the user selects a town, you can use the value of the TownId
Dim selectedTownId As Integer = ComboBox1.SelectedValue
|
|
|
|
|
Thank yo for the reply.
This works up to displaying the Towns but on saving the TownIds are not saved may be you elaborate more.
But it seems you get exactly what i want to do.
|
|
|
|
|
con.Open()
Dim cam As New SqlClient.SqlCommand("select Img from ImgTable where ID='" & Me.NumericUpDown1.Value & "'", con)
Dim rd As SqlClient.SqlDataReader
rd = cam.ExecuteReader
rd.Read()
Dim len As Long = rd.GetBytes(0, 0, Nothing, 0, 0)
Dim arry(CInt(len)) As Byte
rd.GetBytes(0, 0, arry, 0, CInt(len))
con.Close()
Dim memory As New System.IO.MemoryStream(arry)
Dim bmap As New System.Drawing.Bitmap(memory, True)
Me.PictureBox1.Image = bmap
Hi,
the above is the error code. In that con is connecting control. I want to display the stored image in sql to the Picture Box (pictureBox1). Here i got error in " Dim bmap As New System.Drawing.Bitmap(memory, True) " as "Parameters requiered". I dont know where from the error occour. can any one help me to resolve the problem and show the image on the picturebox?
Senthil S
Software Engineer
|
|
|
|
|
I am not sure of the specifics of the problem but a couple of suggestions
1. You are calling getbytes twice, you should perhaps read these into a variable so you only have to do this once, see below
Dim bytes as byte() = CType(rd("img"), Byte())
You can then use bytes.length when you need it. Should be more efficient that way.
2. You are leaving yourself open to SQL injection attacks with the inline sql command coming directly from a control - I would at least put something like
Dim imageId as integer = Me.NumericUpDown1.Value
and use this value - that would mean that an exception would be thrown if someone tried to inject.
You may find that making the change in point 1 fixes the problem, might be worth a shot.
|
|
|
|
|
SHatchard wrote: 2. You are leaving yourself open to SQL injection attacks with the inline sql command coming directly from a control - I would at least put something like
Dim imageId as integer = Me.NumericUpDown1.Value
and use this value - that would mean that an exception would be thrown if someone tried to inject.
it is true that this way of working can mean sql injunctions are possible however in this case it isn't possible since the numericupdown control only accepts numeric values.
just thought I'd point this out
If my help was helpfull let me know, if not let me know why.
The only way we learn is by making mistaks.
|
|
|
|