Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Adding records to a table via combobox
Message
 
To
06/05/1998 12:22:23
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00097388
Message ID:
00097400
Views:
22
>>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 Neklioudov
Universal Thread Consultant
3 times Microsoft MVP - Visual FoxPro

"I have not failed. I've just found 10,000 ways that don't work." - Thomas Edison
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform