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:43:14
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00097388
Message ID:
00097411
Views:
23
>>>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
Good Nick. Seems everyone is doing some workaround with those combos. Hope a good fix in Tahoe.
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Reply
Map
View

Click here to load this message in the networking platform