- Hálózatokról alaposan
- Jelszókezelők
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Reklámblokkolók topikja
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- Vírusirtó topic
- Letartóztatták a bitcoin-Jézust
- Sokat fogyaszt az AI, egyre több az adatközpont, kell az atomenergia
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Microsoft Excel topic
Aktív témák
-
Damocles
csendes tag
Abszolút kezdő vagyok, szóval ha valaki tudna megoldást a problémámra úgy mondja, mintha egy hülyének beszélne. Szóval a gond a következő:
Adatbáziskezelés a feladat, van is egy szép kis access táblázatom, amit egy adodc egy datagrid es egy datacombo segítségével szeretnék kezelni a formomon.
Van egy Tipus nevű oszlopa a táblázatnak és azt szeretném, hogy a datacomboban választási lehetőségeknek megjelenjenek a rekordok típusai és ha valamelyiket kiválasztom, akkor CSAK az olyan típusuak jelenjenek meg a datagridben. Ennek érdekében a következő kódot írtam be:
Private Sub Dcbtipus_Change()
Dim strSQL As String
If Dcbtipus.BoundText = '''' Then Exit Sub
strSQL = ''select * from Adatbazis where Tipus = '' & Dcbtipus.BoundText
adoadat.RecordSource = strSQL
adoadat.Refresh
grdadat.ClearFields
grdadat.ReBind
End Sub
Dcbtipus - a datacombo
adoadat - a adodc
grdadat - a datagrid
A probléma az, hogy nekem a adoadat RecordSource tulajdonságához select * from Adatbazis where Tipus = ''valami'' -t kéne beírnom, hogy működjön (tehát idézőjelek közt kéne lennie ennek: & Dcbtipus.BoundText. )
Deha ezt idézőjelek közé teszem, akkor azt ''szószerint'' értelmezi, tehát nem select * from Adatbazis where Tipus = ''valami'' lesz, hanem ez: select * from Adatbazis where Tipus = & Dcbtipus.BoundText
Nincs valami megoldás arra, hogy idézőjelben legyen és normálisan is értelmezze?
[Szerkesztve] -
blemidon
tag
-
Damocles
csendes tag
Igen, pont ahogy gondoltam. Ráadásul szerintem elírtad és nem
strSQL = ''select * from Adatbazis where Tipus = ''' & Dcbtipus.BoundText & '''''
hanem
strSQL = ''select * from Adatbazis where Tipus = ''' & Dcbtipus.BoundText & ''''
(a végén csak egy ' meg egy '' nem 4)
De teljesen mindegy, sehogy nem jó. Az ' utáni rész bezöldül , akár van a végén másik, akár nem, és megjegyzésnek veszi, tehát a tényleges programba nem kerül bele. Más ötlet?
Ja egyébként már kipróbáltam manuálisan megadni a RecordSource tulajdonságát (csakhát ugye így soha nem fog dinamikusan változni a dolog :-P ) és az úgy okés hogy select * from Adatbazis where Tipus = ''valami'' - tehát idézőjelek közé kell rakni. (De mint már írtam az elején idézőjelek közt azért nem jó, mert akkor konkrét szövegnek veszi a Dcbtipus.BoundText -et)
[Szerkesztve] -
blemidon
tag
Várj 1 picit!
Nem írtam el, a PH kovertálja az idézőjelet 2 aposztróffá:)
Tehát:
strSQL = [idézőjel]select * from Adatbazis where Tipus = [aposztróf][idézőjel] & Dcbtipus.BoundText & [idézőjel][aposztróf][idézőjel]
ha a Dcbtipus.boundtext értéke pl ''szöveg'' akkor ennek a kimenete:
select * from Adatbazis where Tipus = 'szöveg'
Amit ide írsz a parancsba, az nem basic, hanem SQL kifejezés, ott pedig a szöveg aposztrófok között van, nem idézőjelben.
Próbáld meg így, mennie kell, kipróbáltam. -
Damocles
csendes tag
Akárhogyan nézem de mindkét könyvem SQL-nél is idézőjelet ír. Ráadásul kipróbáltam és úgy működik is!
Az aposztrófot meg NEM tudom beírni a kódba ugyanúgy, mint ahogy idézőjelet SEM tudok úgy, hogy ne értelmezze azt fejlesztői jegyzetnek illetve a string elejének/végének.
Egyszerűsítve a probléma (illetve ez egy másik, de az alapja ugyanaz):
Ez akarom megjeleníteni egy msgboxban:
Ciceró írta: ''Damoklész kardja lebeg a feje felett'' (bár nem tudom ez így igaz-e)
Ez akkor ez lenne : MsgBox (''Ciceró írta: ''Damoklész kardja lebeg a feje felett'' (bár nem tudom ez így igaz-e)'') csak a gond az, hogy ezt nem lehet se az idézőjel se a zárójel miatt.
Hogyan lehet zárójelet, idézőjelet vagy esetleg aposztrófot megjeleníteni mondjuk egy msgboxban??? -
L3zl13
nagyúr
VB-t nem ismerem, de sok nyelvben van valami extra kerakter, amivel jelölni lehet, hoyg az utánna következő karaktert csak sima karakterként értelmezze, ne speciális jelként.
PHP-ben pl ilyen a .
Tehát ha én stringben idézőjelet akarok írni akkor ''Szöveg ''valami'' szöveg'' És az azt jelenti pl kiiratáskor, hogy: Szöveg ''valami'' szöveg.Aki hülye, haljon meg!
-
blemidon
tag
Akkor vmit nagyon rosszul csinálsz. Itt a teljes progim amit irtam kipróbálni, csak az idézőjeleket és aposztrófokat cseréltem ki [id/ap]-re:
Private Sub Form_Load()
Dim x As String
x = [idézőjel]derry[idézőjel]
Adodc1.RecordSource = [idézőjel]select * from customer where lname = [aposztróf][idézőjel] & x & [idézőjel][aposztróf][idézőjel]
Adodc1.Refresh
End Sub
Ez sikeresen kiszűri az 1 db ''derry'' rekordot a tálából.
Ciceró barátunk így pl működik:
MsgBox ([idézőjel]Ciceró írta: [aposztróf]Damoklész kardja lebeg a feje felett[aposztróf] (bár nem tudom ez így igaz-e)[idézőjel])
Ezt csináltam a fenti példában is. SQL megy idézőjellel is, csak az aposztróffal egyszerűbb.
Amugy a fenti adodc a FoodMart.mdb példa customers táblájára van kötve, valszinü neked is megvan hogy kipróbáld, ha nincs, akkor küldöm az egész projectet ha akarod.
Amúgy az a titok, hogy az aposztróf két idézőjel között legyen egy sztringben, és akkor nem commentnek látja, hanem 1 szöveg részének, és nem foglalkozik vele.
[Szerkesztve] -
Damocles
csendes tag
Ez biztos hogy 6-os vb, ami neked van?
Nekem a ''select * from customer where lname = ''' & x & ''''' sor beírása után hibaüzenetet ad:
Compile error:
Expected: line number or label or statement or end of statement
Ciceró barátunk pedig ugyan működik, de aposztróffal írja ki, nem idézőjelel.(ugyan legutobb azt írtam, hogy aposztrófot se birok berakni, de mostmár belátom, tévedtem, viszont alapvetően nekem idézőjel kéne) -
Damocles
csendes tag
Ez a sor viszont ''működik'' és aposztrófok közé teszi a derryt, de ettől még nekem ugyanúgy hibás a programom mintha semmi nem lenne ott. Nekem idézőjelek között kéne lennie, nem aposztrófok között! Ha jól látom, az az egyetlen eltérés kettőnk között, hogy neked egy rekordot kell kiszűrnöd, nekem meg minden olyan rekordot, aminek az egyik mezőjében az a bizonyos izé van (ami a datacombo tartalma)
[idézőjel]select * from customer where lname = [idézőjel] & [idézőjel][aposztróf][idézőjel] & x & [idézőjel][aposztróf][idézőjel] -
Damocles
csendes tag
Köszi!!!
Sikerült!!!
Éljen!!!
Egyébként pont most jöttem rá véletlenül egy másik megoldásra. Ha csinálok egy olyan mezőt, amibe csak számok kerülnek (a különböző típusoknak kódokat adok) és ezek a számok alapján kérdezek rá, akkor nem kell idézőjel.
De mostmár mind1!
A Chr$(34) remek ötlet volt, magamtól soha az életbe nem jöttem volna rá. Nagyon köszi! -
Damocles
csendes tag
Akkor továbra sem értem, hogy neked miért aposztróf kell nekem meg idézőjel, hogy működjön. De a probléma megoldódott (lásd fent) és nagyon köszi neked is a segítséget.
A furcsa az, hogy mástól is megkérdeztem (olyan programozót, aki a vb-t a mindennapi munkájához használja) és ő is aposztrófot emlegetett, szóval valami velem nem stimmel (a basicem is tőle van lemásolva szóval még csak verziókülönbség sem lehet). -
blemidon
tag
Igen. Sztem valami olyan lehet, hogy a SELECT... utasítás az SQL, nem basic. Ezt az adatbázis szerver hajtja végre, nem a basic interpreter. Tehát attól is függhet hogy milyen adatbázisszervert használsz.
De a lényeg hogy megy:)
(Olyan konstansoknak nézzél utána hogy vbNewLine (ez biztos), stb, van egy csomó ilyen speckó karakter definiálva, és akkor nem kell chr(34), mégis szebb:)
Aktív témák
- Corsair RM850e 850W Gold Moduláris Tápegység
- Samsung Odyssey Neo G9 Super Ultrawide Gamer Monitor!49"/Mini LED/5120x1440/240hz/1ms/+Ajándék
- Apple Macbook Pro 16" 2019 i7-9th 6Magos 32/512 -75% Touch Bar HUN Radeon Pro 5300M 4GB 3K Retina
- Apple Mac mini M2 2023 8GB 256GB + Xiaomi Mi Desktop 27"-os FullHD monitor egyben
- Apple iPhone 14 Pro 128GB kártyafüggetlen fekete HIBÁTLAN állapotban
- Eladó újszerű kombinált samsung hűtő A+ (RB30J3000SA )
- IPhone 15PRO MAX Samsung S24Ultra csere
- Lian Li Strimer Plus V2 12VHPWR 16pin - 3x8pin VGA Tápkábel 335 mm 8LED ARGB - RTX 4000 szériához
- Lian Li Strimer Plus V2 12VHPWR 16pin - 3x8pin VGA Tápkábel 335 mm 8LED ARGB - FirstShop 2025.11.28.
- Nintendo DS/3DS kompatibilis játékok (ง '-' )ง Budapest Nyugatinál
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest