16. november 2007 - 08:59Der er
9 kommentarer og 1 løsning
Kan ikke hente det korrekte ud af databasen
Hejsa,
Den her er meget vigtig for mig, så håber en eller anden kan hjælpe mig.....
Jeg har to selects kommandoer - alt efter om product id er sat til 0 eller ej.
Min kode: productId = 1; if (employeeId == 0) { //Hvis productId er sat til 0 skal alle producter vises if (productId == 0) { connect.command.CommandText = "SELECT ErrorCyklus.errorMessageId, ErrorCyklus.errorcyklusidSub, ErrorCyklus.errorHeadline, Priority.priorityId, Priority.priority, Status.statusId, Status.status, ErrorMessage.errorMessage, ErrorMessage.errorReportDate, Product.productId, Product.productName, Product.productDescription FROM Status RIGHT JOIN (Priority RIGHT JOIN (ErrorMessage RIGHT JOIN (Patch RIGHT JOIN (Version RIGHT JOIN (Product RIGHT JOIN ErrorCyklus ON Product.productId=ErrorCyklus.productId) ON Version.versionId=ErrorCyklus.versionId) ON Patch.patchId=ErrorCyklus.patchId) ON ErrorMessage.errorMessageId=ErrorCyklus.errorMessageId) ON Priority.priorityId=ErrorCyklus.priorityId) ON Status.statusId=ErrorCyklus.status WHERE (ErrorCyklus.companyId = @companyId) AND (Status.statusId <> 6) AND (ErrorCyklus.errorcyklusidSub = 0)"; } else { connect.command.CommandText = "SELECT ErrorCyklus.errorMessageId, ErrorCyklus.errorcyklusidSub, ErrorCyklus.errorHeadline, Priority.priorityId, Priority.priority, Status.statusId, Status.status, ErrorMessage.errorMessage, ErrorMessage.errorReportDate, Product.productId, Product.productName, Product.productDescription FROM Status RIGHT JOIN (Priority RIGHT JOIN (ErrorMessage RIGHT JOIN (Patch RIGHT JOIN (Version RIGHT JOIN (Product RIGHT JOIN ErrorCyklus ON Product.productId=ErrorCyklus.productId) ON Version.versionId=ErrorCyklus.versionId) ON Patch.patchId=ErrorCyklus.patchId) ON ErrorMessage.errorMessageId=ErrorCyklus.errorMessageId) ON Priority.priorityId=ErrorCyklus.priorityId) ON Status.statusId=ErrorCyklus.status WHERE (ErrorCyklus.companyId = @companyId) AND (Status.statusId <> 6) AND (ErrorCyklus.errorcyklusidSub = 0) AND (ErrorCyklus.productId = @productId)"; }
}
Kører jeg den, hvor productId er sat til 0 - får jeg korrekt to rækker ud af databasen. Sætter jeg derimod productId til 1, får jeg ingen rækker udfra databasen (jeg skulle have én række ud).
Jeg har forsøgt at køre begge SELECTs i access databasen og der viser de hvad de skal, så det kan vel ikke være select kommandoen, der er et problem......men hvad er det så?
Det eneste forskel på de to rækker er:
AND (ErrorCyklus.productId = @productId)
Altså jeg tilføjer ovennævnte hvis productId ikke er 0....
Håber godt nok en eller anden kan hjælpe mig.......
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
Slettet bruger
16. november 2007 - 09:13#1
og du kan copy paste din sql select fra access hvor det virker over i C# koden og så virker det ikke ? - Når du debugger går den ind i metoden og der sker ingen exception.. ?
Lige netop og ja den går ind i metoden og der sker ingen exception.......Det eneste jeg kan se, er at den ikke henter nogen rækker (den går ikke ind i min while løkke)....
Når jeg kører den select kommando med fejlen i Access, sker der én ændring:
SELECT ErrorCyklus.errorMessageId, ErrorCyklus.errorcyklusidSub, ErrorCyklus.errorHeadline, Priority.priorityId, Priority.priority, Status.statusId, Status.status, ErrorMessage.errorMessage, ErrorMessage.errorReportDate, Product.productId, Product.productName, Product.productDescription FROM Status RIGHT JOIN (Priority RIGHT JOIN (ErrorMessage RIGHT JOIN (Patch RIGHT JOIN (Version RIGHT JOIN (Product RIGHT JOIN ErrorCyklus ON Product.productId=ErrorCyklus.productId) ON Version.versionId=ErrorCyklus.versionId) ON Patch.patchId=ErrorCyklus.patchId) ON ErrorMessage.errorMessageId=ErrorCyklus.errorMessageId) ON Priority.priorityId=ErrorCyklus.priorityId) ON Status.statusId=ErrorCyklus.status WHERE (ErrorCyklus.companyId = @companyId) AND (Status.statusId <> 6) AND (ErrorCyklus.errorcyklusidSub = 0) AND (ErrorCyklus.productId = [@productId]);
Altså den sætter firkantede paranteser udenom @productId.
Jeg har så forsøgt at copy/paste dette ind istedet for - men stadig får jeg ikke den række ud, som jeg gør i access.....
Synes godt om
Slettet bruger
16. november 2007 - 09:22#4
Tja så tror jeg godt nok ikke, at den finder nogen data :)
hvad hvis du nøjes med "SELECT * from ErrorCyklus where ErrorCyklus.productId = 1)"; finder den så noget.. ?
Ja jeg gør så - men har fundet fejlen med din hjælp.......
Problemet lå ikke i productId - men i employeeId - jeg har 3 parametre ind - er employeeId sat til 0 - bruges den ikke........ Og access tilgang skal jo komme i korrekt rækkefølge - hvad der kommer ind, skal også sættes i samme rækkefølge i parametrene i samme rækkefølge - for at få det korrekte ud.....
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.