not really, you cannot usually use -de for "on", but it is OK for "in". Therefore "Lamba masada" sounds like "the lamp is in the table".
(sometimes you can, but often it sounds wrong so when you see "on" try to use üzerinde/üstünde. Except for weird English uses like "on the bus", then you cannot say üzerinde/üstüne of course)
Lamba masada sounds totally ok for me. In/at/on = -de/-da
It's really hard to say on = üstünde always. For instance; on the road. You can't really say Yolun üstündeyim.
üstünde/üzerinde actually means on top of but we use it so frequently that you can translate that into on. but this doesn't mean that on = üstünde and you shouldn't use -de/-da
I don't want to create rules but just when I think about it; i have the feeling for things that are lying on the table, it is OK to use -de/da but not really for things which are standing. Would you really say for example "şişe masada"? even if you say it, how much more likely are you to say "Şişe masanın üstünde."
I often say Şişe, sürahi ve tencere masada. Or Vazo masada. You can also say Kağıt masanın üstünde. The difference is actually about the emphasis. For example if you are preparing the table you would say Şişe masada. (I already put it on the table) But if someone is looking for the bottle you would say Şişe masanın üstünde. to be more specific about the location. Or to imply that there is something on the table and you should be careful you can say Masanın üstünde şişe var. I think you are free to use -de/-da instead of üstünde just like you can use on instead of on top of in English.
For Spanish speakers -> Encima = üstünde
It uses both.
üst means something like "top" or "upper side".
So from that you get masanın üstü "the table's top" with genitive masanın and possessive üstü.
And then you add the locative to the end of that to get masanın üstünde "at the table's top = on top of the table, on the table".