Προς το περιεχόμενο

form load vb


Chrisad

Προτεινόμενες αναρτήσεις

Δημοσ.

ena project sthn vb apoteleite apo forma kataxorishs se bash access kai mia forma probolhs twn kataxoriseon...

otan anoigei h forma kataxorishs thelw na anoigei etoimh gia kataxorish kai oxi emfanizontas thn teleytaia kataxwrish poy ekana bazw to exhs:

 

Private Sub Form_Load()

Data1.Recordset.AddNew

End Sub

 

opws katalabate einai lathos......

 

exw prospathisei kai me to allo :

 

Private Sub Form_Load()

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

End Sub

alla pali ta idia ......molis anoigei h forma moy emfanizei thn proigoymenh kataxvrish.....pos prepei na to syntaxw?

Δημοσ.

xrisimopieis to lathos event kai sto lathos object. ipotheto oti doulebeis me to data control tis vb etsi?? Nomizo oti to event pou thes einai to validate sto data control....

Δημοσ.

Με το να καλείς την AddNew απλώς ενημερώνεις το control οτι στο επόμενο update οτι εχει στο recordset του θα το προσθέσει σαν καινούργια εγγραφή

 

Δοκίμασε αυτό

 

> 
with Data1
   .RecordSet.AddNew
   .RecordSet!Field1 = "" ; όπου Field1 ειναι το πεδίο που έχεις στην βάση σου π.χ CustomerID
   .RecordSet!Field2 = "" ; 
   .RecordSet!Field3 = "" ;
end with
 
 

 

Όταν θα θελεις να προσθέσεις το καινούργιο record θα κάνεις Data1.Update

Δοκίμασε το....

Δημοσ.

> 
with Data1
   .RecordSet.AddNew
   .RecordSet!Field1 = "" 
   .RecordSet!Field2 = ""  
   .RecordSet!Field3 = "" 
end with
 
 

 

 

O parapano kodikas mpainei sto validate event tou data control.

Δημοσ.

To κάνω όπως λέτε

Private Sub Data1_Validate(Action As Integer, Save AsInteger)

 

With Data1

 

.Recordset.AddNew

 

.Recordset!Όνομα = ""

.Recordset!Επώνυμο = ""

.Recordset!Διεύθυνση = ""

.Recordset!Περιοχή = ""

.Recordset!TK = ""

.Recordset!ΤηλΕργασίας = ""

.Recordset!ΤηλΟικίας = ""

.Recordset!Φαξ = ""

.Recordset!Email = ""

.Recordset!Σημειώσεις = ""

 

End With

End Sub

 

Πέρνω το εξής error:

Run-time error '3426':

 

This action was cancelled by an associated object.

 

 

Δημοσ.

το προβλημα δεν ειναι να εισαγει τα στοιχεια..αλλα επειδη το data control ειναι bound στα textboxes του φερνει συνεχεια απ οτην βαση το last row υποθετω και το διχνει στα text boxes. Μαλλον ακομα και αν θεσεις σαν "" τα textboxes κατα to form load ισως ο κωδικας που τρεχει και κανει fetch το row και στο δειχνει να τρεχει μετα..αρα ετσι και αλλιως να σου δινει την φορμα γεματη.

Ε θυμαμαι καλα..γενικα τους μηχανισμους..αλλα ισως να μπορεις οτα φορτωνει η φορμα να μην ειναι τα text box bound στις τιμες που φερνει το datacontrol και αφου εσυ θελεις να κανεις μια αλλαγη με την πρωτη αλλαγη να τρεχει κωδικας που θα τα σετταρει..και θα μενουν ετσι μεχρι να κλεισει η εφαρμογη? λεω τωρα μπορει να ειναι και βλακεια!

 

μια αλλη μαλλον βλακεια ειναι .το να βαλεις ενα empty row στην βαση..και στην συνεχεια στο form load να ζητας να στο δωσει οποτε με το που ανοιξει η φορμα να σου δινει ουσιαστικα ενα row αλλα να ειναι το empty.Αν εσυ θες να κανει instert tote θα τρεχει αναλογος κωδικα.

 

Γενικα δεν ειμαι σιγουρος για τα παραπανω καποιος που να τα εχει πιο φρεσκα?

 

Δημοσ.

Gia dokimase to exis:

Vale ola osa thes na kaneis stin db sto Form_Initialize kai

 

Form_Load()

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

End Sub

 

To initialize ekteleitai prin to load. Tha ta emfanisei ola kai meta tha kathariseis esi.

Otan patisei to koumpi gia na prostesei nea eggrafi (afou xrisimopoieis bound controls) ta fields tha exoun katalliles times kai tha kaneis apla Data1.Recordset.AddNew

Data1.Recordset.Update (Den thimamai akrivos edo pos ginetai alla einai eukolo na to vreis)

 

Δημοσ.

όχι ..... αντι να λυθεί ξαφνικά όταν πατάω το Label1 με το οποίο καταχωρούσα μια εγγραφή

και μπορούσα να δημηουργησω μια νέα (είχα βάλει αυτον τον κώδικα) και έπαιζε κανονικα η φόρμα εισαγωγής, δηλαδή καταχωρούσα εγγραφές κανονικά.

 

Private Sub Label1_Click()

If Text1.Enabled = True And Text6.Enabled Or Text7.Enabled = True Then

Data1.Recordset.AddNew

If Text1.Text = "" Then

MsgBox "Πρέπει να καταχωρήσετε τουλάχιστον όνομα και ένα τηλέφωνο."

End If

End If

End Sub

 

πάνω στον πειραματισμό που έκανα για να ανοίγει η φόρμα καταχώρισης κενή και όχι παρουσιάζοντας μου την τελευταία εγγραφή, όπως ανέφερα... τώρα μου βγάζει το εξής μηνυμα όταν παταω το Label1

 

 

Run-time error '3426':

 

This action was cancelled by an associated object.

 

 

έπαιζε κανονικά πριν και αυτο είναι που μου κάνει εντύπωση..

κάποια μαλακία έκανα αλλά δεν ξέρω ποιά..

 

 

 

Δημοσ.

Sto form_activate mporei na min exoun fortosei ola ta antikeimena stin form kai giauto na sou evgale auto to provlima!

 

Anevase kapou to frmmain me tin vasi na tin katevaso kai na sto ftiaxo! Den einai diskolo (etsi toulaxiston pisteuo)

Δημοσ.

> Dim rowNumber As Integer
    Dim dataTableVar As New DataTable() 

>     Private Sub Input_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim connectionStr As String = "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source = assessmentDB.mdb"
        Dim sql_str As String = "SELECT * FROM Table1"
        Dim dataAdapter As New OleDb.OleDbDataAdapter(sql_str, connectionStr)
        dataAdapter.Fill(dataTableVar)
        dataAdapter.Dispose()
        UpdateBoxes()
        rowNumber = dataTableVar.Rows.Count
    End Sub 

 

>     Private Sub UpdateBoxes()
        Try
            txtOrderNumber2.Text = CStr(dataTableVar.Rows(rowIndex)("orderNum"))
            txtProductName2.Text = CStr(dataTableVar.Rows(rowIndex)("prodName"))
            txtUnitCost2.Text = CStr(dataTableVar.Rows(rowIndex)("unitCost"))
            txtQuantity2.Text = CStr(dataTableVar.Rows(rowIndex)("quantity"))
            txtTotalCost2.Text = CStr(dataTableVar.Rows(rowIndex)("totalCost"))
        Catch e As System.IndexOutOfRangeException
            MsgBox("Database is empty", MsgBoxStyle.Information, _
            "CS3514 Assessment")
        End Try
    End Sub 

 

Prosfata eixa mia ergasia se vb, elpizw n boh8hsa.

 

Δημοσ.

Sugnwmh, den katalaba kala thn erwthsh sou.

O apopanw kwdikas fortwnei ta dedomena ths database (Input_Enter...) kai to UpdateBoxes() bazei ta dedomena sta textboxes.

Ton parakatw kwdika xrhsimopoihsa gia na bazei dedomena (sto telos ths database fusika) me to pathma enos button

 

>     Private Sub UpdateDataBase()
        Dim con As New ADODB.Connection() 'Set up the ADO database connection
        Dim rs As New ADODB.Recordset()    'Set up 1 recordset object
        con.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; " & _
        "Data Source = assessmentDB.mdb" 'Link connection to database engine and database
        con.Open() 'Open the connection

        rs.CursorType = ADODB.CursorTypeEnum.adOpenDynamic 'Set cursor to move forward and back
        rs.LockType = ADODB.LockTypeEnum.adLockOptimistic ' Allow update of database
        rs.Open("select * from Table1", con) 'create recordset from Table1 of database
        rs.AddNew()
        'apo edw kai katw ginetai to update ths database
        If rdAutomatic.Checked = True Then
            rs("orderNum").Value = (rowNumber) + 100
        Else
            rs("orderNum").Value = txtMOrderNumber.Text
        End If
        rs("prodName").Value = txtProductName1.Text
        rs("unitCost").Value = txtUnitCost1.Text
        rs("quantity").Value = txtQuantity1.Text
        rs("totalCost").Value = txtTotalCost1.Text

        'rs.MoveLast()
        rs.Update()
        'rs.MoveNext()
        rs.Close()
    End Sub 

 

To "rs("orderNum").Value = (rowNumber) + 100" mhn se apasxolei, apla egw h8ela na einai to orderNum > 100

opou "rowNumber = dataTableVar.Rows.Count"

 

dataTableVar.Rows.Count dinei ton ari8mo twn records pou exeis sthn database.

To problhma einai oti to "dataTableVar.Rows.Count" einai readOnly kai gia na kaneis access ta kainouria records prepei na kaneis restart to prog (opws to egrapsa egw...)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...