Toon posts:

[VB]Update or cancelupdate without edit or addnew

Pagina: 1
Acties:
  • 155 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een Visual basic progje met wat velden. Deze wil ik in een database zetten. Ik gebruik de 'data' component van VB.

Maar ik krijg bij het invoegen van de eerste rij (lege database) de melding 'Update or cancelupdate without addnew or edit'

Wanneer er al 1 rij instaat dan nooit meer.

War voor code moet ik gebruiken voor de eerste?
en moet ik die dan plaatsen in 'Data1_Validate()'

Verwijderd

Topicstarter
Nog een probleempje.

Ik heb deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'Helpfullness
    lbOutput.AddItem ""
    Which = "Helpfullness <> ''"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    lbOutput.AddItem "Helpfullness:            " & iOut & "   " & Format(Round(iPercent, 2), "###0.00") & "%"
    
    Which = "Helpfullness = 'N/A'"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    lbOutput.AddItem "  N/A              " & iOut & "     " & Format(Round(iPercent, 2), "###0.00") & "%"
    
    Which = "Helpfullness = 'POOR'"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    lbOutput.AddItem "  POOR                " & iOut & "      " & Format(Round(iPercent, 2), "###0.00") & "%"
    
    Which = "Helpfullness = 'FAIR'"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    lbOutput.AddItem "  FAIR                " & iOut & "      " & Format(Round(iPercent, 2), "###0.00") & "%"
    
    Which = "Helpfullness = 'AVERAGE'"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    iTop = iPercent
    iTop2 = iOut
    lbOutput.AddItem "  AVERAGE            " & iOut & "   " & Format(Round(iPercent, 2), "###0.00") & "%"
    
    Which = "Helpfullness = 'VERY GOOD'"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    iTop = iTop + iPercent
    iTop2 = iTop2 + iOut
    lbOutput.AddItem "  VERY GOOD            " & iOut & "     " & Format(Round(iPercent, 2), "###0.00") & "%"
    
    Which = "Helpfullness = 'EXCELLENT'"
    iOut = GetInfo(Which)
    iPercent = (iOut * 100) / iTotal
    iTop = iTop + iPercent
    iTop2 = iTop2 + iOut
    lbOutput.AddItem "  EXCELLENT            " & iOut & "     " & Format(Round(iPercent, 2), "###0.00") & "%"

    lbOutput.AddItem "  TOP 3                " & iTop2 & "       " & Format(Round(iTop, 2), "###0.00") & "%"

Het probleem is dat het er zo uit ziet

Afbeeldingslocatie: http://www.endoria.net/upload/index.php/2730280833

Het staat niet netjes onder elkaar (top3 moet iets naar rechts).

Hoe kan ik dit oplossen?

  • mulder
  • Registratie: Augustus 2001
  • Nu online

mulder

ik spuug op het trottoir

Van dat eerste weet ik niet meer, volgens is er nog geen record ofzo.

Dat tweede: kijk eens naar het listview control.

oogjes open, snaveltjes dicht


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02:18

Gerco

Professional Newbie

Dat tweede: Als je het recht op papier wilt hebben en dus ook recht op je scherm, kun je misschien beter een fixed-width font gebruiken voor je textbox. Ik gebruik altijd Courier New 8pt om te printen (132 chars breed op 1 A4).

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • mulder
  • Registratie: Augustus 2001
  • Nu online

mulder

ik spuug op het trottoir

Eeeeem, als ie het papier willen hebben gebruikt hij hopenlijk toch wel een report zou ik zeggen. It's not like DOS you know.

oogjes open, snaveltjes dicht


Verwijderd

Als je met dat data-control ook een echte recordset terugkrijgt, dan kan je kijken naar de property: .EditMode
Deze geeft de update-status van een record aan.
- adEditNone
- adEditUpdate
- adEditAddNew

Dus gewoon vooraf controleren of het record<>adEditNone is en dan pas een update-commando geven...

Verwijderd

Topicstarter
Dit bovenste begrijp ik niet helemaal, zou je me hier iets verder mee willen helpen.
Ik heb nu dit geprobeerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Data1_Validate(Action As Integer, Save As Integer)
Dim msgret

     
    If Save = -1 Then
      If txtProjectNumber.Text = "" Then
        msgret = MsgBox("You left ProjectNumber field blank." & vbCrLf & "Please return to the your last entry and complete the form!", vbOKOnly + vbInformation, "Database Error!")
        Action = 0
      ElseIf ClosureDate.Value = "" Then
        msgret = MsgBox("You left ClosureDate field blank." & vbCrLf & "Please return to the your last entry and complete the form!", vbOKOnly + vbInformation, "Database Error!")
        Action = 0
      ElseIf ComboHospital.Text = "" Then
        msgret = MsgBox("You left Hospital field blank." & vbCrLf & "Please return to the your last entry and complete the form!", vbOKOnly + vbInformation, "Database Error!")
        Action = 0
      ElseIf ComboTAO.Text = "" Then
        msgret = MsgBox("You left TAO field blank." & vbCrLf & "Please return to the your last entry and complete the form!", vbOKOnly + vbInformation, "Database Error!")
        Action = 0
      End If

[b]    
    If PC_DATA_Rec.BOF Then
      PC_DATA_Rec.AddNew
      PC_DATA_Rec.Update
    End If
[/b]    
    
    End If
End Sub

Probleem is dat de laatste code, de record weer leeg heeft gemaakt (oid). Database is in ieder geval leeg.

Ik heb het er ook boven gezet, maar dan gaat If txtProjectNumber.Text = "" steeds af.

Voor de duidelijkheid plaatje prog
Afbeeldingslocatie: http://www.endoria.net/upload/index.php/2052159718

en de form load
code:
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Load()

   Set PC_Db = OpenDatabase(App.Path & "\projectclosure.mdb", False, False)
   Set PC_DATA_Rec = PC_Db.OpenRecordset("SELECT * FROM DATA", dbOpenDynaset)
   Set PC_SCORE_Rec = PC_Db.OpenRecordset("SELECT * FROM SCORE", dbOpenDynaset)
   
   Set Data1.Recordset = PC_DATA_Rec
   Set Data2.Recordset = PC_SCORE_Rec
    
End Sub
Pagina: 1