PDA

View Full Version : Daten in cJdbGrid aktualisieren



Natalia
27-May-2011, 02:17 AM
Hallo,

ich bekomme in Folgende Code-Struktur beim öffnen der Maske immer Fehlermeldung "Datei nicht geöffnet. Tabelnummer 0" und Programm wird abgebrochen, was mache ich Falsch?

Wie kann ich noch Daten in Grid, ohne Relation zwichen Tabellen zu setzen, aktualisieren?

Warum kennt er beim öffnen noch kein TabelNummer?

Object oDD1 is a DD

Procedure OnConstrain
Constrain Tabel1.Feld1 eq Parameter1
end_Procedure
End_Objekt

Object oDD2 is a DD
End_Object

Objekt odbForm is a dbForm


set server to oDD2
//entry_eitem Feld aus oDD2

procedure OnChange

send rebuild_constrains of oDD1

send mReloadData of ocjdbGrig1
end_Procedure

end_Object

object ocjdbGrid1 is a cdbCJGrid

set server to oDD1

procedure mReloadData

send MoveToFirstRow
end_procedure
//Hier natürlich die columns von DD1
end_Objekt

Matthias
27-May-2011, 02:35 AM
Mit dem Pseudocode ist es natürlich etwas schwierig.
Ich vermute es fehlt die Angabe des Main_Files in der Grid.
Set Main_File to ...

Matthias

Vincent Oorsprong
27-May-2011, 03:04 AM
Natalia,

Mindenstens solst Du OnChange aenderen in eine refresh methode weil OnChange sehr oft angerufen wurde.

Vincent Oorsprong
27-May-2011, 03:09 AM
Matthias,

Die cDbCJGrid Hat keinen Main_File (oder dergleichen) Eigenschaft.

Matthias
27-May-2011, 04:08 AM
Gut zu wissen.
Ich hatte diese Fehlermeldung schon, wenn ihm irgendwo das Main_File gefehlt hat. Aber das lässt sich sicher mit dem Debugger herausbekommen, woran es sonst liegt.
Matthias

Natalia
3-Jun-2011, 05:23 AM
Gibt es für Grid Main_File? Ich dachte nir Server? Habe noch nirgenwo gesehen.

Aber wenn ich zuerst Grid definiere und danach die Form, bekomme ich kein Fehlermeldung mehr :o), hier kann ich es machen, aber manchmal mochte ich die Rehenfolge nicht ändern :o(.

Und ich probiere mit Refresh, danke fürs Tip.

Th.Forsti
20-Jul-2011, 08:53 AM
Hallo Vincent, oder Alle VDF-ler,

habe mal ein Beispiel für das EntryOrder aus VDF 16.1 gemacht

wenn das "Refresh" in dem Obj "User-Login Name" ist wird der "User name" nicht mehr angezeigt wenn ich in dem Login-Namen blättere !!

Was geht hier falsch ?



Use Windows.pkg
Use DFClient.pkg
Use Customer.DD
Use Users.DD
Use DFEntry.pkg
Use DfCentry.pkg
Use dfTabDlg.pkg
Use cDbCJGrid.pkg
Use cCJGridColumnRowIndicator.pkg
Deferred_View Activate_oTest5forum for ;
Object oTest5forum is a dbView
Set Border_Style to Border_Thick
Set Size to 286 426
Set Location to 31 59
Object oDbTabDialogView1 is a dbTabDialogView
Set Size to 260 408
Set Location to 7 9
Object oDbTabView1 is a dbTabView
Object oUsers_DD is a Users_DataDictionary
End_Object
Object oCustomer_DD is a Customer_DataDictionary
Property String ps_State ""

Procedure OnConstrain
String sState
Get ps_State to sState

Constrain customer.State eq sState
End_Procedure
End_Object
Set Main_DD to oUsers_DD
Set Server to oUsers_DD
Set Label to 'oDbTabView1'
Object oUsers_LoginName is a dbForm
Entry_Item Users.LoginName
Set Location to 7 76
Set Size to 13 86
Set Label to "LoginName:"
Procedure Refresh Integer notifyMode
Handle hoDataSource
Boolean bHasRecord

Forward Send Refresh notifyMode
Get HasRecord of oUsers_DD to bHasRecord
Get phoDataSource of oDbCJGrid1 to hoDataSource

If bHasRecord Begin
// Set ps_State of oCustomer_DD to ""
Set ps_State of oCustomer_DD to "FL"

// Send Reset of hoDataSource
Send Rebuild_Constraints of oCustomer_DD
Send Grid_reload of oDbCJGrid1
End
End_Procedure
End_Object
Object oUsers_Full_Name is a dbForm
Entry_Item Users.Full_Name
Set Location to 6 191
Set Size to 13 173
Set Label to "Name:"
Set Label_Col_Offset to 3
Set Label_Justification_Mode to JMode_Right
Set Enabled_State to False
// Procedure Refresh Integer notifyMode
// Handle hoDataSource
// Boolean bHasRecord
//
// Forward Send Refresh notifyMode
//
// Get HasRecord of oUsers_DD to bHasRecord
// Get phoDataSource of oDbCJGrid1 to hoDataSource
//
// If bHasRecord Begin
// Set ps_State of oCustomer_DD to "FL"
//
// Send Reset of hoDataSource
// Send Rebuild_Constraints of oCustomer_DD
//
// Send MovetoFirstRow of oDbCJGrid1 //Th. wenn aktiv geht anzeige User-full-name nicht !!!
// Send Grid_reload of oDbCJGrid1
// End
// End_Procedure
End_Object
Object oComboForm1 is a ComboForm
Set Size to 13 100
Set Location to 27 75

//Combo_Fill_List is called when the list needs filling

Procedure Combo_Fill_List
// Fill the combo list with Send Combo_Add_Item
Send Combo_Add_Item "AL"
Send Combo_Add_Item "DE"
Send Combo_Add_Item "CA"
Send Combo_Add_Item "FL"
Send Combo_Add_Item "TN"
End_Procedure

//OnChange is called on every changed character

Procedure OnChange
String sValue

Get Value to sValue // the current selected item
Set ps_State of oCustomer_DD to sValue
Send Rebuild_Constraints of oCustomer_DD

// Send MovetoFirstRow of oDbCJGrid1
Send Grid_reload of oDbCJGrid1
End_Procedure

//Notification that the list has dropped down

//Procedure OnDropDown
//End_Procedure

//Notification that the list was closed

//Procedure OnCloseUp
//End_Procedure
End_Object
Object oDbCJGrid1 is a cDbCJGrid
Set Server to oCustomer_DD
Set Size to 188 383
Set Location to 47 3
Set pbAllowAppendRow to False
Procedure Grid_reload
Send MovetoFirstRow
End_Procedure
Object oCJGridColumnRowIndicator1 is a cCJGridColumnRowIndicator
Set piWidth to 15
End_Object
Object oCustomer_Customer_Number is a cDbCJGridColumn
Entry_Item Customer.Customer_Number
Set piWidth to 48
Set psCaption to "Number"
Set pbFocusable to False
End_Object
Object oCustomer_Name is a cDbCJGridColumn
Entry_Item Customer.Name
Set piWidth to 170
Set psCaption to "Customer Name"
Set pbFocusable to False
End_Object
Object oCustomer_State is a cDbCJGridColumn
Entry_Item Customer.State
Set piWidth to 221
Set psCaption to "St."
Set pbComboButton to True
Set pbFocusable to False
End_Object
Object oCustomer_Status is a cDbCJGridColumn
Entry_Item Customer.Status
Set piWidth to 48
Set psCaption to "Status"
Set pbCheckbox to True
Procedure OnEndEdit String sOldValue String sNewValue
Forward Send OnEndEdit sOldValue sNewValue
Send Request_Save
End_Procedure
End_Object
Object oCustomer_Zip is a cDbCJGridColumn
Entry_Item Customer.Zip
Set piWidth to 72
Set psCaption to "Zip"
Procedure OnEndEdit String sOldValue String sNewValue
Forward Send OnEndEdit sOldValue sNewValue
Send Request_Save
End_Procedure
End_Object
End_Object
End_Object
Object oDbTabView2 is a dbTabView
Set Label to 'oDbTabView2'
End_Object
End_Object
Cd_End_Object

Th.Forsti
27-Jul-2011, 07:31 AM
Hallo @ All,

niemand eine Idee, weshalb das nicht geht in dem Order Beispiel oben !!!!!

Vincent Oorsprong
28-Jul-2011, 02:15 AM
Thomas,

Es ist wahrscheinlich der FOUND Indikator dafür, dass durch das Ausfüllen des Rasters auf falsegesetzt wird. Die Refresh-Verfahren müssten Sie jede Suchen durchzuführen oder am Ende der Methode fanden die Anzeige wieder auf, was sie in den Anfang gesetzt.

Roman Köhler
5-Sep-2011, 01:13 AM
Guten Morgen Natalia,

genau das gleiche Problem habe ich letzte Woche hier gelöst bekommen. Schau Dir diesen Thread an : http://support.dataaccess.com/Forums/showthread.php?46250-Erneutes-F%FCllen-des-cDBCJGrid-nach-rebuild_constraints
Mich hat auch die sehr seltsame Fehlermeldung mir Index nicht gedungen und Tablenummer = 0 usw. irritiert.
Zum Schluss war es ganz einfach: Führe Deinen moveToFirstRor nur dann aus, wenn Du vorher mit isComObjectCreated überprüft hast, ob der cjGrid auch tatsächlich bereits erstellt ist.
Ich habe nun keinerlei Programme mehr, in denen dieser Fehler auftaucht.

Viele Grüße
Roman