Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Adding records to a table via combobox
Message
From
06/05/1998 12:55:26
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00097388
Message ID:
00097417
Views:
21
>>>I feel like I'm beating a dead horse with yet another basic combobox problem (and it's probably the wrong metaphot), but here goes:
>>>
>>>I'd like to use a combobox to first display a list of cities and allow the user to select from that OR to add a new city directly to the table in the combobox if it isn't. I had seen several suggestions to add in the LostFocus event of the combo somthing like:
>>>
>>>If This.value <> This.DisplayValue
>>>
>>>Endif
>>>
>>>but this doesn't seem to be working for me.
>>>
>>>Can anyone help with specifics of this?
>>>
>>>Thanks!
>>>
>>>Sylvia
>>Sylvia,
>>Try with this class :
**************************************************
>>*-- Class:        mycombo_edit (c:\temp\test.vcx)
>>*-- ParentClass:  combobox
>>*-- BaseClass:    combobox
>>*
>>DEFINE CLASS mycombo_edit AS combobox
>>
>>
>>	Height = 22
>>	Width = 100
>>	DisabledBackColor = RGB(255,255,255)
>>	aliasname = "None"
>>	fieldname = "None"
>>	Name = "mycombo_edit"
>>
>>
>>	PROCEDURE When
>>		THIS.REQUERY
>>	ENDPROC
>>
>>
>>	PROCEDURE LostFocus
>>		Do While occurs("  ",this.displayvalue) > 0
>>			this.displayvalue = strtran(this.displayvalue,"  "," ")
>>		Enddo
>>		This.displayvalue = Upper(Chrtran(Alltrim(This.displayvalue),"yi","IY"))
>>		this.value = this.displayvalue
>>	ENDPROC
>>
>>
>>	PROCEDURE Init
>>		WITH This
>>			.rowsourcetype = 3
>>			if lower(.fieldname)="none" or ;
>>				lower(.aliasname)="none"
>>				.fieldname = substr(.controlsource,rat(".",.controlsource)+1)
>>				.aliasname = substr(.controlsource,1,;
>>								rat(".",.controlsource)-1)
>>			endif
>>			.rowsource = [SELECT DISTINCT ]+THIS.fieldname +;
>>				[ as dummy FROM ]+this.aliasname+[ where !empty(]+THIS.fieldname + ;
>>				[) union ] +;
>>				[SELECT this.displayvalue as dummy ] +;
>>				[ FROM ]+this.aliasname + ;
>>				[ INTO cursor qq order by 1 ]
>>		ENDWITH
>>	ENDPROC
>>
>>
>>ENDDEFINE
>>*
>>*-- EndDefine: mycombo_edit
>>**************************************************
Cetin
>
>Also, for my needs I have simpler version in my Combo.Valid:
>
>local lItemExists
>lItemExists = .F. && assume the value isn’t in the list.
>FOR i = 1 to THIS.ListCount
>	IF THIS.List(i) = ALLTRIM(THIS.Text)
>		lItemExists = .T.
>		EXIT
>	ENDIF
>ENDFOR
>
>IF !lItemExists
>	local lcNewValue
>	lcNewValue = THIS.Text
>	THIS.AddItem(lcNewValue)
>	THIS.DisplayValue = lcNewValue
>****
>*In my case I am not adding the record to the source, but
>*you can add the code here to actually add the record with the new value to your
>*source  and requery the combo
>****
>ENDIF
>
>Nick

Nick -

Excuse the stupid question, but to requery do I just invoke the native requery event of the combo, e.g. This.requery and if so, how does that differ from refresh?

Sylvia
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform