07. februar 2006 - 02:11Der er
16 kommentarer og 1 løsning
TQuery, order By , liverequest, virker ikke på alle datafieldtyp
Hej allesammen.
Jeg er stødt ind i et probem med Tquery. Jeg bruger SQL til at søge og sortere i mine databaser, jeg også gerne have muligheden for at bruge normale dataset commands så som insert, edit, delete, post o.s.v. Dette er som bekendt ikke muligt uden at LiveRequest er sat til True, dette virker også udemærket som længe jeg ikke bruger Order By i min SQL string. Dvs. at det virker ikke, hvis Order By sortere efter et stringfield, men det virker fint hvir Order By sortere efter et integerfield eller floatfield.
Kan jeg kunne uden om dette problem ?? Jeg skal måske lige sige at jeg stadig bruger Paradox tabler.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Måske ikke noget du kan bruge til noget men det er den måde jeg laver database programmer på. Jeg har 3 procedurer, en til at hente, en til at gemme/ændre og en til at slette poster med. Jeg bruger _ingen_ DB (data aware) komponenter. Dvs. at det er kun i disse 3 procedurer der er kode som skriver til databasen, på den måde syntes jeg der er meget mere styr på hvad der sker, og så er det også let at skifte til en anden database da det kun er i disse 3 procedurer der skal ændres kode.
Næ, det er jo lidt forskellig fra program til program og desuden bruger jeg ikke paradox men MySQL, men selv om man bruger paradox kan man jo stadig kører det hele i 3 procedurer, jeg brugte også paradox i flere år inden jeg skiftede til MySQL. At man ikke bruger DB komponenter kræver self. lidt mere kode mht. at fylde data ind i edit felter osv. og hive dem ud igen men jeg syntes det er det værd. Der skal self. nok være andre der vil mene at DB komponenter er ganske gode at bruge :-)
Lad være med at bruge Paradox. Brug en rigtig database i stedet! Lad være med at køre liverequests. Vær' konsekvent og brug SQL. De der DataAware komponenter forhindrer dig i at lave gode programmer. Det er lidt mere besværligt med SQL, men det betaler sig at være konsekvent - og så er det portabelt.
kroning > Mit indlæg var ret overflødigt da du havde skrevet det samme men syntes lige jeg ville melde ind. Ved lidt konstruktiv pression kan det være at Finn kan overtales til at tilpasse programmet til noget tidssvarende :-)
Jeg vil da meget gerne høre lidt mere om jeres tanker. Hvilken database vil I anbefale at jeg bruger, for en del år siden legede jeg lidt med interbase og oracle, men syntes at alt blev meget langsomt når jeg brugte disse.
Når i skriver at DataAware komponenter er noget skidt, hvad bruger i så ?? i kan vel ikke komme udenom BdGrid, og DbEdit ??
Jeg kan kun anbefale MySQL da jeg ikke har prøvet andre. Jeg bruger ingen DataAware komponenter overhovedet dvs. heller ikke DbGrid og DbEdit, i stedet bruger jeg en almindelig Edit og ListView som jeg så selv fylder ud med data modtaget fra MySQL, det kræver lidt mere kode men man har så 100% styr på hvor og hvornår der skrives til databasen. Dvs. jeg henter en post med SQL SELECT og når den eller en ny skal skrives til databasen bruger jeg SQL UPDATE eller INSERT. Jeg har så lavet en enkelt Gem procedurer som kan bruges til at gemme alle poster i alle tabeller, proceduren går simpelhen ind og kikker på hvad tabellen indeholder og danner en SQL sætning ud fra det, på den måde skal jeg ikke have en Gem procedurer for hver eneste tabel i min database.
Det samme her. Det er noget med at hente data over i lister som TObjectList eller TStringList og præsentere det i hvad man nu har. DBGrid og den slags holder jeg mig langt væk fra.
Jeg har et dataobjekt og en liste som jeg propper dataobjekterne over i. Som regel er dataobjektet ret analogt med recorden i min tabel. Tænker man lidt objektorienteret så er det også dataobjektets opgave at præsentere og skrive sit data.
type TDataClass = class private public constructor Create(aId : integer; aName, aAddress1, aAddress2 : string); // = recorden property aID : integer read fID; // Readonly for den skal ikke kunne ændres property aName : string read fName write fName; procedure FillListItem(aListItem : TListItem); // Præsentér sig selv i et listview end;
Min liste plejer at lave select'en der henter data og sørger for at oprette n dataobjekter i sin liste. Plejer også at lave en FillListView(aListView : TListView) her.
Databaserne Interbase (Firebird), MySql og Access for den slags skyld, kan bruges. Sidstnævnte har ADO som du kan koble noget DBGrid på - hvis du stadig synes det er en god idé. Interbase har også data-aware komponenter. Nævner det ikke fordi jeg synes det er den bedste idé, men fordi det findes.
Endelig, i stedet for Paradox så kan du gemme til en TMemTable (freeware, søg på Torrys). Jeg mener at denne tabel også kan bruges til DBGrids og slige.
Jeg har leget en del med Access, men synes at den er lidt langsom, så jeg tror jeg vil prøve at give MySql et skud. Jeg bruger tit autoInc felter til at give mine poster en unik id, hvad er jers løsning på dette, i mit tilfælde er det ikke muligt at et af felterne som Id, det er nødt til være et særligt id felt.
Perfect, jeg kender som sagt ikke MySql, men vil da kaste mig over den. Jeg ville meget gerne se kodeeks. på hvordan du henter data fra en MySql tabel.
Så har jeg downloadet MySql, den virker lidt tung at komme i gang med, men ser meget lovende ud. Jeg har også hentet DbaCentral for MySql, samt SBMySql60 components.
Ikke fordi jeg græder over en potentiel, men mistet andel af 30 points, men skal det forstås sådan, at du ikke fik svar på dit spørgsmål, dengang i 2006?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.