Solved

Code Lacking

Posted on 2009-04-03
9
258 Views
Last Modified: 2012-05-06
What's wrong in my code below? I'm using msflexgrid. It doesn't save correctly
Public Sub OPEN_CON1(cn As ADODB.Connection, db As String, ServerName As String)

Set cn = New ADODB.Connection

cn.Provider = "sqloledb"

cn.ConnectionTimeout = 25

cn.Properties("Data source").Value = Trim(ServerName)

cn.Properties("Initial Catalog").Value = Trim(db)

cn.Properties("User ID").Value = "sa"

cn.Properties("Password").Value = ""

cn.CursorLocation = adUseClient

cn.Open , "sa", ""

End Sub

Public Sub save_Table(cn As ADODB.Connection, lpTable_No As String, Customer_name As String, Time_in As String, Time_Out As String)

Dim rs As ADODB.Recordset

Dim sql As String

Set rs = New ADODB.Recordset

    sql = "select * from The_Table where Table_No='" & lpTable_No & "'"

    rs.LockType = adLockOptimistic

    rs.CursorType = adOpenKeyset

    rs.Open sql, cn

    With rs

        If .BOF = True And _

            .EOF = True Then

            .AddNew

            !Table_No = lpTable_No

        End If

        !Customer_name = grid.TextMatrix(grid.Row, 1)

        !Time_in = Trim(grid.TextMatrix(grid.Row, 2))

        !Time_Out = grid.TextMatrix(grid.Row, 3)

        .Update

        .Close

    End With

    Set rs = Nothing

End Sub

Private Sub CmdSave()

Dim cn As ADODB.Connection

Call OPEN_CON1(cn, "MyTable", "Winpos")

Call save_Table(cn, grid.TextMatrix(grid.Row, 0), grid.TextMatrix(grid.Row, 1), grid.TextMatrix(grid.Row, 2), grid.TextMatrix(grid.Row, 3))

Set cn = Nothing

End Sub

Open in new window

grid.bmp
0
Comment
Question by:Whing Dela Cruz
  • 5
  • 2
  • 2
9 Comments
 

Author Comment

by:Whing Dela Cruz
Comment Utility
It saved only the last data of the table. example above " 1 Humbang Baboy " the rest did not saved.
0
 
LVL 5

Expert Comment

by:mrcoolcoder
Comment Utility
You do not have a loop and you are passing in the values to your sub but not using them.  You need to set the current row as the grid will not loop within itself.

There are many ways to do this, but try this.
Private Sub CmdSave()

Dim cn As ADODB.Connection

Call OPEN_CON1(cn, "MyTable", "Winpos")

dim iRow as Integer

For iRow = 0 to 3

grid.row = iRow

Call save_Table(cn, grid.TextMatrix(grid.Row, 0), grid.TextMatrix(grid.Row, 1), grid.TextMatrix(grid.Row, 2), grid.TextMatrix(grid.Row, 3))

Set cn = Nothing

End Sub

Open in new window

0
 
LVL 5

Expert Comment

by:mrcoolcoder
Comment Utility
sorry forgot the "next"
Private Sub CmdSave()

Dim cn As ADODB.Connection

Call OPEN_CON1(cn, "MyTable", "Winpos")

dim iRow as Integer

For iRow = 0 to 3

    grid.row = iRow

    Call save_Table(cn, grid.TextMatrix(grid.Row, 0), grid.TextMatrix(grid.Row, 1), grid.TextMatrix(grid.Row, 2),    grid.TextMatrix(grid.Row, 3))

Next

Set cn = Nothing

End Sub

Open in new window

0
 

Author Comment

by:Whing Dela Cruz
Comment Utility
Hi!
i tried the given code and  it was able to saved the entire row but the problem is only the last row was saved. the first and the second to the last row was not.
What else should i do?
thanks!
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 11

Accepted Solution

by:
Antagony1960 earned 500 total points
Comment Utility
You also need to change lines 26 to 28 of your original code, so that the save_Table procedure uses the values passed as arguments rather than direct grid references:
        !Customer_name = Customer_name

        !Time_in = Time_in

        !Time_Out = Time_Out

Open in new window

0
 

Author Comment

by:Whing Dela Cruz
Comment Utility
Hi!
you mean like this;

        !Customer_name = Customer_name = grid.TextMatrix(grid.Row, 1)
        !Time_in = Time_in = Trim(grid.TextMatrix(grid.Row, 3))
        !Time_Out = Time_Out = grid.TextMatrix(grid.Row, 5)
       
0
 

Author Comment

by:Whing Dela Cruz
Comment Utility
Hi!
I need to move same set of question because i had changed some part of my table.
I hope you will monitor on it..
Thanks!
0
 
LVL 11

Expert Comment

by:Antagony1960
Comment Utility
Sorry for not replying sooner, unbeknownst to me my POP email server has been down so I wasn't getting alerts.

<<you mean like this;>>

Erm... no, I meant it just like I posted it. What you have done there will try and set each field to either True or False (-1 or 0) depending on whether the passed argument values match the columns you're specifying explicitly there. You're already specifying which columns of the grid to use when you call the save_Table procedure from CmdSave, so there shouldn't be any need for you to reference the grid from within the procedure itself.
0
 

Author Comment

by:Whing Dela Cruz
Comment Utility
I'm very sorry but i could not exactly understand what you meant for...
Can you move to my other set of question because i transfered it for more details in my problem.
Thanks!
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now