Aktív témák
-
Fko
tag
Szóval az a házim builderből, hogy egy könyvtári nyilvántartó rendszer szerűséget csináljak.
Az elején még minden jól is ment, de most egyszerűen megakadtam és nem tudom mi a baj.
Van egy táblám :
konyvek
kid auto incrementes unique key
isbn string 10 karakter
cim string 100
szerzoazon int
peldanyszam int
ev int
kolcsonpsz int
ilyen mezőkkel.
Próbálok beszúrni a táblába, csináltam egy eljárást:
void __fastcall TfrmMain::KonyvBeszur(AnsiString kisbn, AnsiString kcim ,int kszerzoazon, int kpsz, int kev) {
frmData->qrAddKonyv->ParamByName(''k1'')->AsString = ''fd'';
frmData->qrAddKonyv->ParamByName(''k2'')->AsString = ''fdss'';
frmData->qrAddKonyv->ParamByName(''k3'')->AsInteger = 1;
frmData->qrAddKonyv->ParamByName(''k4'')->AsInteger = 20;
frmData->qrAddKonyv->ParamByName(''k5'')->AsInteger = 10;
frmData->qrAddKonyv->ParamByName(''k6'')->AsInteger = 20;
/* frmData->qrAddKonyv->ParamByName(''k1'')->AsString = kisbn;
frmData->qrAddKonyv->ParamByName(''k2'')->AsString = kcim;
frmData->qrAddKonyv->ParamByName(''k3'')->AsInteger = kszerzoazon;
frmData->qrAddKonyv->ParamByName(''k4'')->AsInteger = kpsz;
frmData->qrAddKonyv->ParamByName(''k5'')->AsInteger = kev;
frmData->qrAddKonyv->ParamByName(''k6'')->AsInteger = kpsz;*/
frmData->qrAddKonyv->ExecSQL();
}
Tehát a kikommentezett rész az ahogy alapból kellene működnie. A másik táblánál így tökéletesen működik.
A felső csak egy próba, hogy mi lehet baj, de így sem megy.
Egyszerűen én már nem tudom mit rontottam el.
Ja és az insert:
INSERT INTO konyvek (Isbn, Cim, Szerzoazon, Peldanyszam, Ev, Kolcsonpsz) VALUES (:k1, :k2, :k3, :k4, :k5, :k6)
Valaki légyszíves segítsen, jövő héten kell leadnom.UHU Linux forever
-
Alan
aktív tag
A fejlesztőrendszerben mit látsz a Params tulajdonságnál? Rendesen ki van töltve, minden paraméter szerepel, adattípusokkal együtt?
Esetleg egy ''frmData->qrAddKonyv->Close;'' még befigyelhetne a legelejére, bár ExecSQL()-nél talán nem kötelező.
Na és ha végképp nem megy és már nagyon sürgős, akkor javaslom a paraméterek behelyettesítését a Format() függvénnyel a Params[] tömb helyett. Csúnyább, de az tuti jó lesz, meg jóval könnyebb debugolni is. -
Fko
tag
Params-nál minden ok.
Amúgy Type mismatch in expression hibát dob EDBEngineError-ként.
De érdekes, hogy a másik táblám a két string mezővel pedig ugyanígy tökéletesen műxik és tudok is új rekordot felvenni.
Lehet, hogy a BDE-vel van valami gond?UHU Linux forever
-
Alan
aktív tag
Nem lehet, hogy szóköz van a string-jeidben és nem teszi idézőjelbe őket a paraméterátadáskor?
Ha nem ez az ok, akkor viszont biztosan a BDE csuklása lesz. Úgy már én is jártam, hogy ugyanezt a hibaüzenetet adta, amikor (szerinte) nem megfelelő hosszúságú string-eket adtam át lekérdezés paramétereként. (Igaz, ez nem teljesen volt olyan, mint a te eseted, mert nálam szövegkonstansok is voltak a lekért mezők között, és ezeken akadt fenn a BDE.)
A megoldás az volt, hogy minden string paramétert ''kipárnáztam'' arra a hosszra, amit a lekérdezés első rekordjához használt. Ronda, de finom, mert a végén működött
Egyébként mindenképpen ajánlom a Format() függvényt, legalább egy kipróbálás erejéig. Azzal az SQL parancs valami ilyesmi formát fog ölteni:
INSERT INTO konyvek (Isbn, Cim, Szerzoazon, Peldanyszam, Ev, Kolcsonpsz) VALUES (''a'', ''b'', 1, 2, 2004, 2)
, ezt pedig meg kell zabálnia még a BDE-nek is. -
Fko
tag
Nekiálltam újra az egész feladatnak.
Most még csak a szerző felvitelt és módosítást csináltam meg, de az most jól működik.
AnsiString t = Format(''INSERT into szerzok (vnev, knev) VALUES ('%s', '%s')'', ARRAYOFCONST((vezeteknev, keresztnev)));
Ahogy kisilabizáltam, kb. így kell használni a Format()-ot.
KösziUHU Linux forever
-
Alan
aktív tag
-
Fko
tag
Akadt egy újjabb problémám közben.
Tehát a kölcsönzés táblában van egy olyan mező, hogy kölcsönzés dátuma.
Tehát ez egy dátum típusú mező, de nem sikerül sem sehogyan sem, hogy elfogadja a dátumot amit átadok neki.
Tehát én egy DateTimePicker-t használok ->Date.DateString()-et adom át az insertes Format()-nak.
Nem tudod, hogy kell átadni dátumot, hogy ne legyen type mismatch?UHU Linux forever
-
Fko
tag
Up!
UHU Linux forever
-
Fko
tag
Köszi. Közben megoldottam a problémát egyedül.
Így adtam át a TDateTimePicker-ben kiválasztott dátumot:
dtpDatum->Date.DateString()
így aztán stringként letároltam,
visszafelé pedig:
dtpDatum->Date = frmData->dsKolcsonzes->DataSet->Fields->FieldByName(''datum'')->AsDateTime;
Azért köszi!UHU Linux forever
Aktív témák
- Honda topik
- VR topik (Oculus Rift, stb.)
- Kamionok, fuvarozás, logisztika topik
- Exkluzív funkcióval tenné vonzóbbá az ARM-os PC-ket a Microsoft
- Milyen okosórát gyermekeknek?
- Alkoholista nevelde
- Windows 10
- Azonnali VGA-s kérdések órája
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Gaming notebook topik
- További aktív témák...
- XBOX ONE/PS4/PS5/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!
- XBOX SERIES/PS4/PS5/XBOX ONE/NINTENDO SWITCH konzolt vásárolnék!
- PS5/PS4/XBOX ONE/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!
- Új Dobozos Lenovo Ideapad Flex 5 x360 Érintős Ultrabook Óriás Tab 16" -40% Ryzen 5 5500U 16/512 QHD
- PS4/PS5/XBOX ONE/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!