Avatar billede fhansen Praktikant
07. februar 2006 - 02:11 Der 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.

Hilsen

Finn
Avatar billede kroning Nybegynder
07. februar 2006 - 21:53 #1
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.
Avatar billede fhansen Praktikant
07. februar 2006 - 23:08 #2
Hmmm, har du et kode eks. jeg kan se
Avatar billede kroning Nybegynder
07. februar 2006 - 23:17 #3
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 :-)
Avatar billede hrc Mester
28. februar 2006 - 09:41 #4
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.

Hermed dagens moralske opstød.
Avatar billede kroning Nybegynder
28. februar 2006 - 09:47 #5
hrc > Enig, DataAware komponenter er noget skidt, så jeg er ikke helt alene om den mening :-)
Avatar billede hrc Mester
28. februar 2006 - 09:51 #6
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 :-)
Avatar billede fhansen Praktikant
04. marts 2006 - 07:01 #7
Hejsa.

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 ??
Avatar billede kroning Nybegynder
04. marts 2006 - 09:00 #8
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.
Avatar billede hrc Mester
05. marts 2006 - 21:01 #9
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.
Avatar billede fhansen Praktikant
06. marts 2006 - 09:41 #10
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.
Avatar billede hrc Mester
06. marts 2006 - 09:52 #11
Jeg forstår ikke problemet. MySql har autoinc-felter bare du vælger en nyere version.
Avatar billede fhansen Praktikant
06. marts 2006 - 12:05 #12
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.
Avatar billede hrc Mester
06. marts 2006 - 12:30 #13
Avatar billede kroning Nybegynder
06. marts 2006 - 19:46 #14
Husk at hvis du vil bruge dbexpress som følger med delphi så understøtter den kun MySQL op til version 4.0.xx.
Avatar billede fhansen Praktikant
07. marts 2006 - 07:37 #15
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.
Avatar billede fhansen Praktikant
08. februar 2011 - 00:13 #16
LUKKER
Avatar billede hrc Mester
08. februar 2011 - 08:40 #17
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?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester